交替循环字符A / B

时间:2016-08-29 11:24:28

标签: python loops for-loop

如何在python循环中交替打印A / B字符?

我对结果的期望:

oneA
twoB
threeA
fourB
...

6 个答案:

答案 0 :(得分:3)

您可以使用itertools.cycle重复序列。这通常与zip一起使用来迭代更长的列表,同时重复较短的列表。例如

import itertools
for i,j in zip(['one', 'two', 'three', 'four'], itertools.cycle('AB')):
    print(i+j)

输出

oneA
twoB
threeA
fourB

答案 1 :(得分:1)

你也可以尝试在增量for循环的索引上使用模数运算符%来替换字母:

list_num = ['one', 'two', 'three', 'four', 'five', 'six']
list_alpha = ['A', 'B']
list_combined = []
for i in range(0, len(list_num)):
    list_combined.append(list_num[i] + (list_alpha[1] if i % 2 else list_alpha[0]))
list_combined
>>> ['oneA', 'twoB', 'threeA', 'fourB', 'fiveA', 'sixB']

答案 2 :(得分:1)

试试这个:

l1 = ['A','B']
l2 = ['one','two','three','four']
for i,val in enumerate(l2):
    print(val + l1[i%len(l1)])

答案 3 :(得分:0)

类似的东西:

alternate_words = ['A', 'B']
    count = 0

while count < 5:
    print count+1, alternate_words[count % len(alternate_words)]
    count += 1

输出:

1 A

2 B

3 A

4 B

5 A

答案 4 :(得分:0)

我认为这会有所帮助 - &gt;

a1 = ['A','B']
a2 = ['one','two','three','four']
for i in range(len(a2)):
    print a2[i]+a1[i%2]

答案 5 :(得分:0)

根据@Graipher的建议而不是将zip()itertools.cycle()结合使用,更好更简单的解决方案将使用itertools.product()

  

输入迭代的笛卡尔积。

     

大致相当于生成器表达式中的嵌套for循环。例如,对于B中的y,乘积(A,B)的返回值与(x中的x的(x,y)相同)。

https://docs.python.org/2/library/itertools.html#itertools.product

words = ['one', 'two', 'three'] 
for word, i in itertools.product(words, ('A', 'B')):
    print(word+i)