切片:
取列表或者元祖中的元素,可以通过索引,但索引只能取一个元素。如果取多个元素,通过循环的话,比较繁琐。而如果用切片,一行代码就解决了。切片是python中比较灵活的选取列表或者元祖中选取元素的方法,当然也可以选择字符串中的元素。
基本的形式是L[start : end],表示从start一值到end的索引元素,间隔是1,包括start索引,不包括end索引。
如果间隔不是1,则可以通过L[start: : end: step]。如果start空缺,表示从0开始;如果end缺失表示一直索引到最后元素。
可以倒叙索引如L[-1],当然也可以倒叙切片。L[-2:]表示L的最后两个元素;L[:-2]表示除去L的最后两个元素剩下的所有元素。倒叙切片也是包括起始索引,不包括结束索引。L=[1,2,3,4]。L[-3:-1] = [2,3]。L[-4:-1:2] = [1,3]。
迭代:
这里的迭代是指:循环遍历list, tuple, dict, set, str中的元素。
索引迭代:
迭代只是取出元素,有时我们想加上索引。可以用enumerate()函数:
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in enumerate(L):
print index, '-', name
0 - Adam
1 - Lisa
2 - Bart
3 - Paul
zip()函数:把两个列表变成一个。
>>> zip([10, 20, 30], ['A', 'B', 'C'])
[(10, 'A'), (20, 'B'), (30, 'C')]
dict的value(),和items()方法:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
print d.values()
# [85, 95, 59]
for v in d.values():
print v
# 85
# 95
# 59
>>> for key, value in d.items():
... print key, ':', value
...
Lisa : 85
Adam : 95
Bart : 59
列表生成:
不用for循环,通过简单的列表生成表达式就可以生成复杂的表达式。
比如:
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
条件过滤:
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
只有if后面判断为True时才把for循环中的元素加进列表。
也可以多层表达式:
>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']