1.并行迭代
有时候,一个程序中需要我们同事在一个for循环中迭代两个以上的集合。其中一种方法就是循环其中一个集合的索引,然后根据索引对所有集合进行循环,例如:
names = ['anne','beth','george','damon']
ages = [12,45,32,102]
for i in range(len(names)):
print(names[i],'is',ages[i],'years old')
更方便的就是使用內建的zip函数进行并行迭代,可以把序列压在一起,然后返回一个元组的列表:
>>>zip(names,ages)
[('anne',12),('beth',45),('george',32),('damon',102)]
现在我们可以在循环中解包元组:
for name,age in zip(names,ages):
print(name,'is',age,'year old')
zip函数可以作用于任意多的序列,如:
for name,age,number in zip(names,ages,range(4)):
print(number,':',name,'is',age,'year old')
有些时候想要迭代序列中的对象,同时还想要获取当前对象的索引。例如没在一个字符串列表中替换多有含'xxx'的子字符串。实现的方法肯定很多,例如:
index = 0
for string in strings:
if 'xxx' in strings:
strings[index] = '[censored]'
index += 1
其中一个比较方便的方法就是使用內建的·enumerate函数:
for index,string in enumerate(strings):
if 'xxx' in strings:
strings[index] = '[censored]'
这个函数可以在提供索引的地方迭代索引-值对。