在python中列出理解

时间:2012-04-23 14:53:23

标签: python list

有没有办法可以使用python中的列表推导将两个列表a和b组合成c,

a=[1,2,3]
b=['a','b']

c=['1a','1b','2a','2b','3a','3b'] 

7 个答案:

答案 0 :(得分:6)

>>> from itertools import product
>>> a=[1,2,3]
>>> b=['a','b']
>>> ['%d%s' % el for el in product(a,b)]
['1a', '1b', '2a', '2b', '3a', '3b']

使用新的字符串格式

>>> ['{0}{1}'.format(*el) for el in product(a,b)]
['1a', '1b', '2a', '2b', '3a', '3b']

答案 1 :(得分:6)

>>> a = [1,2,3]
>>> b = ['a', 'b']
>>> c = ['%d%c' % (x, y) for x in a for y in b]
>>> c
['1a', '1b', '2a', '2b', '3a', '3b']

答案 2 :(得分:2)

使用c = ["%d%s" % (x,y) for x in a for y in b]

答案 3 :(得分:2)

列表推导可以遍历多个对象。

In[3]: [str(a1)+b1 for a1 in a for b1 in b]

Out[3]: ['1a', '1b', '2a', '2b', '3a', '3b']

请注意将数字转换为字符串的细微之处。

答案 4 :(得分:2)

只需使用“嵌套”版本。

c = [str(i) + j for i in a for j in b]

答案 5 :(得分:2)

import itertools
c=[str(r)+s for r,s in itertools.product(a,b)]

答案 6 :(得分:1)

有点类似于jamylak的解决方案:

>>> import itertools
>>> a=[1,2,3]
>>> b=['a','b']
>>>[str(x[0])+x[1] for x in itertools.product(a,b)]
['1a', '1b', '2a', '2b', '3a', '3b']