如何同时使用枚举和切片

时间:2018-09-03 18:10:22

标签: python-3.x slice enumerate

以下是我想每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

我该怎么做?

2 个答案:

答案 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
...

如果我是对的。

相关问题