一次几次迭代

时间:2018-12-12 19:41:44

标签: javascript python

给出名称列表:

['joe', 'rob', 'bob', 'long', 'dave', 'steve', 'ben', 'josh', 'etc'];

是否可以编写一个循环遍历几个名称的循环?

示例for names in list:迭代3之后,运行程序的其余部分,然后返回到循环结束的位置(因此从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”(空的“结束”参数表示“仅到列表的末尾)