最近,我正在练习嵌套循环。我被困在迭代数字和数组元素的列表。
问题-我有一个包含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')
答案 0 :(得分:2)
您的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)
答案 1 :(得分:0)
您应该更改第一个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')
答案 2 :(得分:0)
您可以按照其他答案中的建议使用cycle
,也可以使用列表理解来模仿它:
[(i + 1, alpha[i % len(alpha)]) for i in range(totalnum)]
# [(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C')...]