我们为什么需要却片?
[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!