我想有一个列表理解动态大小的Python列表理解
[x,y,z] for x in a for y in a for z in a
假设这是理解我得到了规模3 我希望能够相应地修改它,2我只会有X ,y为4我会像a,b,c,d等...
有没有办法做到这一点?
我想有一个列表理解动态大小的Python列表理解
[x,y,z] for x in a for y in a for z in a
假设这是理解我得到了规模3 我希望能够相应地修改它,2我只会有X ,y为4我会像a,b,c,d等...
有没有办法做到这一点?
是的,你可以使用product
功能:
from itertools import product
a = [1,2,3]
print list(product(a))
# gives: [(1,), (2,), (3,)]
print list(product(a, a))
# gives: [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
print list(product(a, a, a))
# gives: [(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2, 2), (1, 2, 3), (1, 3, 1), (1, 3, 2), (1, 3, 3), (2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 2, 1), (2, 2, 2), (2, 2, 3), (2, 3, 1), (2, 3, 2), (2, 3, 3), (3, 1, 1), (3, 1, 2), (3, 1, 3), (3, 2, 1), (3, 2, 2), (3, 2, 3), (3, 3, 1), (3, 3, 2), (3, 3, 3)]
,或者更方便与repeat
关键字:
product(a, repeat=3)
有可能已经是一个解决方案,但你将不得不澄清这个问题有点进一步。 –
'[x,y,z] for x in a for for y in a for z in a'是无效的Python语法。你的意思是[[x,y,z] for a for for y in a for z in a]'?如果不是,你想做什么? – NullUserException
我认为你的意思是:'for x in a for y in b for z in c in c'? –