-2

假设我有一个列表列表

[ ['B','2'] , ['o','0'], ['y']]

我想在不使用 iteratool 的情况下将列表组合成这样的东西

["Boy","B0y","2oy","20y"]

我不能使用 itertool 因为我必须使用 python 2.5。

4

2 回答 2

1

itertools.product()做你想做的事。

>>> [''.join(x) for x in itertools.product(*[['B', '2'], ['o', '0'], ['y']])]
['Boy', 'B0y', '2oy', '20y']
于 2013-02-22T22:23:43.957 回答
0

如果你不想使用 itertools,这个列表推导会产生你的输出:

>>> LoL=[['B','2'], ['o','0'], ['y']]
>>> [a+b+c for a in LoL[0] for b in LoL[1] for c in LoL[2]]
['Boy', 'B0y', '2oy', '20y']

这是一个更紧凑的版本:

LoL=[['B','2'], ['o','0'], ['y']]
r=[]
for a in LoL[0]:
    for b in LoL[1]:
        for c in LoL[2]:
            r.append(a+b+c)

print r     

在任何一种情况下,您都在生成一个笛卡尔积,它使用itertools.product()可以更好、更灵活地完成(除非您只是对如何做到这一点感到好奇......)

于 2013-02-22T22:57:47.137 回答