您的位置:首页 > 编程语言 > Python开发

Python语言(七)切片和迭代

2014-09-03 11:36 316 查看

切片

所谓切片是对list来说的,list对象包含一串元素,当需要对它们中的某些元素提取时,通过“切片”非常的方便。例如:

#定义一个list L;
>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
#通过变量名和下标访问元素;
>>> L1 = [L[0], L[1], L[2]]
>>> L1
['Michael', 'Sarah', 'Tracy']
#通过所谓“切片”,也能方便的取出list中的元素;
>>> L2 = L[:3]
>>> L2
['Michael', 'Sarah', 'Tracy']
#上面的方法看作是特例,缺省情况下,起始下标为0,不包括结束下标,也就是不访问L[3],后面的1,表示的是步长,默认为1.
>>> L2 = L[0:3:1]
>>> L2
['Michael', 'Sarah', 'Tracy']
>>>

list的下标还可以是负值,从右往左分别是-1、-2、...、-n。默认的步长也可以是负值,下面举例说明用法:

#以-4为开始,默认步长为1,直到-1截止。L[-1]即为Jack。
>>> L
['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
>>> L8 = L[-4:]
>>> L8
['Sarah', 'Tracy', 'Bob', 'Jack']

#如果我们想将L翻转,该如何操作呢?
>>> Lr = L[-1::-1]
>>> Lr
['Jack', 'Bob', 'Tracy', 'Sarah', 'Michael']
#或者
>>> Lr2 = L[4::-1]
>>> Lr2
['Jack', 'Bob', 'Tracy', 'Sarah', 'Michael']


迭代

迭代表面对象可以通过for循环来遍历所有元素。在Python中,for语句抽象程度较高些,如:

#有dict对象
>>> d = {'a':1, 'b':2, 'c':3}
>>> d
{'a': 1, 'c': 3, 'b': 2}
>>> for key in d:
print key
a
c
b
#for语句迭代访问d中的所有键,并打印

#还可以同时遍历多个对象
>>> for key, val in d.iteritems():
print "%s:%s" % (key, val)
a:1
c:3
b:2
能用在for语句中的对象必须是可迭代的,Iterable!

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
可以看出字符串、list、tuple、dict等都是可迭代的,而整数不能。

>>> for ch in "abc":
print ch
a
b
c
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: