最近,我在练习嵌套循环。我被数字和数组元素的迭代列表所困扰。
问题-我有一个数组,它有3个元素A,B,C,我想把它们加到1-100的数字上。
totalnum = 100
alpha = ['A', 'B', 'C']
length = len(alpha)
for i in range(1,totalnum):
for j in range(length):
result = i,alpha[j]
break
print(result)
我计划得到如下输出:
(1, 'A')
(2, 'B')
(3, 'C')
(4, 'A')
(5, 'B')
(6, 'C')
发布于 2019-05-21 03:13:16
您的break
放错了位置。话虽如此,这里有几种更好的方法:
totalnum = 100
alpha = ['A', 'B', 'C']
length = len(alpha)
for i in range(1, totalnum + 1):
print(i, alpha[i % len(alpha)])
或
from itertools import cycle
totalnum = 100
alpha = cycle(['A', 'B', 'C'])
length = len(alpha)
for i in range(1, totalnum + 1):
print(i, next(alpha))
或者(正如Patrick Haugh指出的那样)
from itertools import cycle
for x in zip(range(1, 101), cycle('ABC')):
print(x)
发布于 2019-05-21 03:14:02
您应该更改第一个for循环,使其步长等于alpha列表的长度,并将result = i,alpha[i]
更改为result = i+j,alpha][i]
。与其立即中断,不如将结果追加到列表中,或者立即打印出来。
totalnum = 15
alpha = ['A', 'B', 'C']
length = len(alpha)
for i in range(1, totalnum, length):
for j in range(length):
result = i + j, alpha[j]
print(result)
输出:
(1, 'A')
(2, 'B')
(3, 'C')
(4, 'A')
(5, 'B')
(6, 'C')
(7, 'A')
(8, 'B')
(9, 'C')
(10, 'A')
(11, 'B')
(12, 'C')
(13, 'A')
(14, 'B')
(15, 'C')
发布于 2019-05-21 03:16:48
您可以按照另一个答案中的建议使用cycle
,也可以使用列表理解来模仿它:
[(i + 1, alpha[i % len(alpha)]) for i in range(totalnum)]
# [(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C')...]
https://stackoverflow.com/questions/56226779
复制相似问题