我有这样的事情:
[e for e in ([n for n in xrange(random.randrange(1, 5))] for x in xrange(10))]
Run Code Online (Sandbox Code Playgroud)
它产生:
[[0, 1, 2, 3], [0, 1, 2], [0], [0], [0, 1], [0], [0, 1], [0, 1, 2, 3], [0, 1, 2], [0, 1, 2]]
Run Code Online (Sandbox Code Playgroud)
而且我需要相同但平整的结构.
现在我使用类似的东西:
l = []
[l.extend(e) for e in ([n for n in xrange(random.randrange(1, 5))] for x in xrange(10))]
Run Code Online (Sandbox Code Playgroud)
但是,在理解中实现任意长度列表的"解包"是否有些不足之处呢?
使用此列表理解:
In [8]: [y for x in xrange(10) for y in xrange(random.randrange(1, 5))]
Out[8]: [0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 0, 1, 2, 3, 0, 0, 1, 0]
Run Code Online (Sandbox Code Playgroud)
上面的列表理解等同于此(但LC更快):
In [9]: lis=[]
In [10]: for x in xrange(10):
....: for y in xrange(random.randrange(1, 5)):
....: lis.append(y)
....:
Run Code Online (Sandbox Code Playgroud)