给出名称列表:
['joe', 'rob', 'bob', 'long', 'dave', 'steve', 'ben', 'josh', 'etc'];
是否可以编写一个循环遍历几个名称的循环?
示例:for names in list:
迭代3
之后,运行程序的其余部分,然后返回到循环结束的位置(因此从3
开始再进行3次迭代,依此类推)。
答案 0 :(得分:1)
您可以从列表中实例化一个迭代器,然后实例化zip
一次要迭代列表的次数:
names = ['joe', 'rob', 'bob', 'long', 'dave', 'steve', 'ben', 'josh', 'etc']
i = iter(names)
for n in zip(i, i):
print(*n)
这将输出:
joe rob
bob long
dave steve
ben josh
答案 1 :(得分:0)
您可以遍历3步遍历索引,并提取列表的切片。
for i in range(0, len(names), 3):
three_names = names[i:i+3]
other_function(three_names)
答案 2 :(得分:0)
一种适合初学者的方法是使用切片
names = ['joe', 'rob', 'bob', 'long', 'dave', 'steve', 'ben', 'josh', 'etc']
# a list of the even number names starting at 0
first_names = names[0::2]
# the odd numbered names starting at 1
second_names = names[1::2]
for pair in zip(first_names, second_names):
print pair
压缩迭代器更为高级(大列表使用更少的内存!),但对于简单的学习情况,切片语法非常有用。它的工作原理是:
list [start: end: by]
因此在此示例中
first_names = names[0::2]
转换为“从零位置开始并继续前进2”(空的“结束”参数表示“仅到列表的末尾)