以下是我想每10个项目具有枚举的正常用法:
for index, value in enumerate(range(50)):
if index % 10 == 0:
print(index,value)
输出:
0 0
10 10
20 20
30 30
40 40
现在想象我想将输出显示为:
1 1
11 11
21 21
31 31
41 41
或
2 2
12 12
22 22
32 32
42 42
我该怎么做?
答案 0 :(得分:2)
不确定为什么要这样做,但是您可以在测试中从n
中减去index
,例如:
In []:
n = 1
for index, value in enumerate(range(50)):
if (index-n) % 10 == 0:
print(index,value)
Out[]:
1 1
11 11
21 21
31 31
41 41
如果第二种情况是n=2
,并且课程n=0
是基本情况,则设置为
或者,从枚举的-n
开始,它会为您提供正确的值(但索引不同):
In []:
n = 1
for index, value in enumerate(range(50), -n):
if index % 10 == 0:
print(index,value)
Out[]:
0 1
10 11
20 21
30 31
40 41
但是您真的不需要enumerate
和%
的索引来获取每10个值,假设您想使用任何可迭代的方法,只需使用itertools.islice()
,例如
In []:
import itertools as it
n = 0
for value in it.islice(range(50), n, None, 10):
print(value)
Out[]:
0
10
20
30
40
然后只需更改n
的值,例如:
In []:
n = 1
for value in it.islice(range(50), n, None, 10):
print(value)
Out[]:
1
11
21
31
41
答案 1 :(得分:0)
我将使用以下功能:
def somefunc(n):
for i in list(range(50))[n::10]:
yield i, i
然后使用所需的整数调用函数:
for i, j in somefunc(2):
print(i, j)
例如应该返回
2, 2
12, 12
22, 22
...
如果我是对的。