2014-12-06 70 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)