如何一起使用枚举和切片
How to use enumerate and slicing together
以下是枚举的正常用法,我想每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
我该怎么做?
不确定你为什么这样做,但你可以在测试中从 index
中减去 n
,例如:
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
我会使用以下函数:
def somefunc(n):
for i in list(range(50))[n::10]:
yield i, i
然后用所需的整数调用函数:
for i, j in somefunc(2):
print(i, j)
例如应该return
2, 2
12, 12
22, 22
...
如果我是对的。
以下是枚举的正常用法,我想每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
我该怎么做?
不确定你为什么这样做,但你可以在测试中从 index
中减去 n
,例如:
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
我会使用以下函数:
def somefunc(n):
for i in list(range(50))[n::10]:
yield i, i
然后用所需的整数调用函数:
for i, j in somefunc(2):
print(i, j)
例如应该return
2, 2
12, 12
22, 22
...
如果我是对的。