我想要实现的目标:
[a, b, c, d] -> [ (a, x), (b, x), (c, x), (d, x) ]
我的初步想法:
done = []
for i in [a, b, c, d]:
done.append((i, x))
有没有更符合Python风格的方法来完成这个任务?
done = [(el, x) for el in [a, b, c, d]]
itertools.repeat
>>> x = 'apple'
>>> a,b,c,d = 'a','b','c','d'
>>> from itertools import repeat
>>> zip([a,b,c,d],repeat(x))
[('a', 'apple'), ('b', 'apple'), ('c', 'apple'), ('d', 'apple')]
使用 itertools.product
>>> from itertools import product
>>> list(product([a,b,c,d],[x]))
[('a', 'apple'), ('b', 'apple'), ('c', 'apple'), ('d', 'apple')]
done = [(i,x) for i in [a,b,c,d]]
repeat
的博客文章,它非常快速。我猜其中一种或者两种方法比其他方法更快。第二种方法非常巧妙。 - agf