python iterator

1. 并行迭代

1
2
names = ["anne", "beth", "george", "damon"]
ages = [12, 45, 32, 102]

1.1. 繁琐方法

通过 i 循环 索引的标准变量名

1
2
for i in xrange(len(names)):
print names[i], "is", ages[i], "years old"

1.2. zip函数 方法

zip 函数可以用来进行并行迭代,可以把两个或以上的序列“压缩”在一起,然后返回一个元组的列表

1
2
for name, age in zip(names, ages):
print name, "is", ages, "years old"

2. 编号迭代

1
a_list = ["abc", "xxx", "def", "xxx"]

2.1. 繁琐 且 容易出错 的方法

通过 计算 索引来修改值,搜索时可能会返回错误的索引

1
2
3
4
5
index = 0
for string in a_list:
if "xxx" in string:
a_list[index] = "[censored]"
index += 1

2.2. enumerate函数 方法

enumerate会将数组或列表组成一个索引序列。

1
2
3
for index, string in enumerate(a_list):
if "xxx" in string:
a_list[index] = "[censored]"

3. 翻转 和 排序迭代

reversed 和 sorted: 可作用于任何序列或可迭代对象上,返回翻转或排序后的版本

1
2
3
4
5
6
7
8
9
10
11
>>> sorted([4, 3, 6, 8, 3])
[3, 3, 4, 6, 8]
>>> sorted("Hello, world!")
[' ', '!', ',', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
>>> list(reversed("Hello, world!"))
['!', 'd', 'l', 'r', 'o', 'w', ' ', ',', 'o', 'l', 'l', 'e', 'H']
>>> "".join(reversed("Hello, world!"))
'!dlrow ,olleH'