PythonTip >> 博文 >> python

[基础] 序列却片

zihua 2014-02-13 15:02:25 点击: 787 | 收藏


我们为什么需要却片?

[root@DataHacker Desktop]# cat slice.py 
#!/usr/bin/env python

import sys
print sys.argv
[root@DataHacker Desktop]# python slice.py -a -b -c
['slice.py', '-a', '-b', '-c']

但通常,我们只对输入的参数感兴趣,所以:

[root@DataHacker Desktop]# cat slice.py
#!/usr/bin/env python

import sys
print sys.argv[1:]
[root@DataHacker Desktop]# python slice.py -a -b -c
['-a', '-b', '-c']

之后,也只要处理这个参数列表即可

SHELL中的文本却片是怎样的?

[root@DataHacker ~]# str="love python dig mysql"
[root@DataHacker ~]# echo ${str:5:10}
python dig

我们是通过指定字符串的起始位置和长度来生成子串,语法如下:

${variable_name:start_position:length}

Python中字符串却片是怎样的?

作用大抵也是相同,都能够用于分离数据,语法如下:

VAR[X:Y:Z]:表示从X到Y-1,每隔Z元素索引一次,其中,Z是步长也是方向,例如:

In [1]: str = "hello"

In [2]: str[::-1]
Out[2]: 'olleh'

负数表示从右到坐走

那么,list 却片又是怎样的?

>>> # 关于切片的理解,记得一本书上的解释,有助理解,共享!
>>> # 初始一个 list a
>>> a=[1,2,3,4,5,6]
>>> a[5]
6
>>> a[-1]
6
>>> a[0:5]
[1, 2, 3, 4, 5]
>>> a[-1:-2]
[]
>>> a[-2:-1]
[5]
>>> # 我们这样理解,对于 list a
>>> # 元素 1 左侧有 0 号挡板
>>> # 元素 2 左侧有 1 号挡板
>>> # 元素 3 左侧有 2 号挡板
>>> # 元素 4 左侧有 3 号挡板
>>> # 元素 5 左侧有 4 号挡板
>>> # 元素 6 左侧有 5 号挡板
>>> # 进一步:
>>> # 元素 6 左侧有 -1 号挡板
>>> # 元素 5 左侧有 -2 号挡板
>>> # 元素 4 左侧有 -3 号挡板
>>> # 元素 3 左侧有 -4 号挡板
>>> # 元素 2 左侧有 -5 号挡板
>>> # 元素 1 左侧有 -6 号挡板
>>> # 开始
>>> # a[-6:-3],-6板到-3板之间,那就是 元素1左侧 到 元素4左侧,包括:1、2、3,测试下
>>> a[-6:-3]
[1, 2, 3]
>>> # a[:-5], 从0号板开始,到-5号板(元素2左侧),包括:1,测试下
>>> a[:-5]
[1]
>>> # 理解了,OK!

在Python里,list却片与字符串却片哪里不同?

In [3]: L1 = [1,2,3]

In [4]: L2 = L1[:]

In [5]: L2
Out[5]: [1, 2, 3]

In [6]: L1[1] = 5

In [7]: L1
Out[7]: [1, 5, 3]

In [8]: L2
Out[8]: [1, 2, 3]

可见,list却片返回的是一个新的list,我们也可以用 is 验证:

In [9]: L1 is L2
Out[9]: False

list却片的运用

list切片有个比较好的运用,是for循环总是按照元素在list中出现的顺序依次迭代,如果我们想要 更改迭代的序列

此时用list切片制作一个副本是个很好的选择, 例子:

In [10]: str = ['Python','SQL','SHELL','Perl']

In [11]: for i in str[:]:
   ....:     if len(i) > 3:
   ....:         print i
   ....:         
Python
SHELL
Perl
By DataHacker
2014-2-10
Good Luck!
原文链接:http://www.tuicool.com/articles/NZVbaq

作者:zihua | 分类: python | 标签: python | 阅读: 787 | 发布于: 2014-02-13 15时 |
上一篇:Finagle里Future的flatMap
下一篇: 双链表