2016-08-29 3 views
0

Как я могу печатать символ A/B попеременно в цикле питона?Символ цикла 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 
+0

Я использовал ваше решение. http://codereview.stackexchange.com/questions/139931/generate-sql-query-by-loop вы можете увидеть весь код – user3041764

1

Вы также можете попробовать с помощью оператора модуля% по индексу увеличивающегося цикл для чисел чередовать буквы:

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'] 
1

Ьгу это:

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

Что-то вроде:

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

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

Выход:

1 А

2 B

3 А

4 B

5 А

0

Я считаю это поможет ->

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

По предложению @Graipher вместо использования в сочетание с zip()itertools.cycle(), лучше и более простым решением будет использовать itertools.product() который

декартово произведение входных итерируемые.

Грубо эквивалент вложенных петель в выражении генератора. Например, произведение (A, B) возвращает то же самое, что ((x, y) для x в A для y в B).

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) 
Смежные вопросы