假设我有一个列表列表
[ ['B','2'] , ['o','0'], ['y']]
我想在不使用 iteratool 的情况下将列表组合成这样的东西
["Boy","B0y","2oy","20y"]
我不能使用 itertool 因为我必须使用 python 2.5。
假设我有一个列表列表
[ ['B','2'] , ['o','0'], ['y']]
我想在不使用 iteratool 的情况下将列表组合成这样的东西
["Boy","B0y","2oy","20y"]
我不能使用 itertool 因为我必须使用 python 2.5。
itertools.product()
做你想做的事。
>>> [''.join(x) for x in itertools.product(*[['B', '2'], ['o', '0'], ['y']])]
['Boy', 'B0y', '2oy', '20y']
如果你不想使用 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()可以更好、更灵活地完成(除非您只是对如何做到这一点感到好奇......)