您好我正在寻找一种在Python中获得for循环的智能方法,其中一个变量(例如k)必须从0转换为2而不是回到0直到循环结束。像
这样的东西k = 0
for j in range(15):
fancycode
k = k + 1
其中每个循环k具有以下值
loop1 k = 0
loop2 k = 1
loop3 k = 2
loop4 k = 0
loop5 k = 1
loop6 k = 2
loop7 k = 0
...
我可以使用if语句,但我想知道是否有一些聪明的东西不会给我的代码带来负担
答案 0 :(得分:1)
正确的方法是使用itertools.cycle()例如:
import itertools
my_cycle = itertools.cycle(range(3))
for j in range(15):
k = my_cycle.next()
在Python 2.x中有效
对于3.x你应该使用
import itertools
my_cycle = itertools.cycle(range(3))
for j in range(15):
k = next(my_cycle)
这适用于任何迭代,无论其性质如何。
答案 1 :(得分:1)
from itertools import cycle, islice
for index, value in enumerate(islice(cycle([0, 2]), 15)):
print('loop{} k = {}'.format(index, value))
答案 2 :(得分:0)
只需使用modulo! (%)
struct PersonStruct: Person {}
let foo = PersonStruct()
print(foo.name)
foo.printName()
答案 3 :(得分:0)
使用列表理解你可以:
for j, k in ((j, j % 3) for j in range(15)):
print('j: {0}, k: {1}'.format(j, k))
将打印:
j: 0, k: 0
j: 1, k: 1
j: 2, k: 2
j: 3, k: 0
j: 4, k: 1
j: 5, k: 2
j: 6, k: 0
j: 7, k: 1
j: 8, k: 2
j: 9, k: 0
j: 10, k: 1
j: 11, k: 2
j: 12, k: 0
j: 13, k: 1
j: 14, k: 2