卡在循环中增加值

时间:2019-05-20 19:07:05

标签: python python-3.x

最近,我正在练习嵌套循环。我被困在迭代数字和数组元素的列表。

问题-我有一个包含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')

3 个答案:

答案 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')...]