2014-12-06 36 views
2

我有兩個表像如何使用兩個列表爲循環賽蟒蛇

num = [1,2,3,4] 
names = ['shiva','naga','sharath','krishna','pavan','adi','mulagala'] 

工作,我想打印兩份名單平行,如果一個列表(NUM)結束我要重複的第一個列表(NUM )直到第二個(名字)列表結束。

現在我想輸出作爲

1 for shiva 
2 for naga 
3 for sarath 
4 for krishna 
1 for pavan 
2 for adi 
3 for mulagala 

回答

6

使用itertools.cyclezip

>>> num = [1,2,3,4] 
>>> names = ['shiva','naga','sharath','krishna','pavan','adi','mulagala'] 
>>> import itertools 
>>> for i, name in zip(itertools.cycle(num), names): 
...  print('{} for {}'.format(i, name)) 
... 
1 for shiva 
2 for naga 
3 for sharath 
4 for krishna 
1 for pavan 
2 for adi 
3 for mulagala 
1

你要使用的itertools.cycleitertools.izip的組合。例如:

>>> num = [1,2,3,4] 
>>> names = ['shiva','naga','sharath','krishna','pavan','adi','mulagala'] 
>>> import itertools 
>>> list(itertools.izip(itertools.cycle(num), names)) 
[(1, 'shiva'), (2, 'naga'), (3, 'sharath'), (4, 'krishna'), (1, 'pavan'), (2, 'adi'), (3, 'mulagala')] 
0

列表(ROUNDROBIN( 'ABC', 'd', 'EF'))

輸出: [ 'A', 'd', 'E',「B ','F','C']

from itertools import chain, izip_longest 
def roundrobin(*iterables): 
    sentinel = object() 
    return (x for x in chain(*izip_longest(fillvalue=sentinel, *iterables)) if x is not sentinel)