首页 > 其他 > 详细

[基础] 序列却片

时间:2014-02-10 17:11:42      阅读:218      评论:0      收藏:0      [点我收藏+]

我们为什么需要却片?

[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://blog.csdn.net/dba_waterbin/article/details/19039141

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!