如何在python循环中交替打印A / B字符?
我对结果的期望:
oneA
twoB
threeA
fourB
...
答案 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)