我想知道是否有一条快捷方式可以在Python列表中列出一个简单的列表.
我可以在for循环中做到这一点,但也许有一些很酷的"单行"?我用reduce尝试了,但是我收到了一个错误.
码
l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
reduce(lambda x, y: x.extend(y), l)
Run Code Online (Sandbox Code Playgroud)
错误信息
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
AttributeError: 'NoneType' object has no attribute 'extend'
Run Code Online (Sandbox Code Playgroud) 当我想展开一个列表时,我找到了如下方式:
>>> a = [[1, 2], [3, 4], [5, 6]]
>>> a
[[1, 2], [3, 4], [5, 6]]
>>> sum(a, [])
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
我不知道这些行发生了什么,文档说明:
sum(iterable[, start])
资金
start
和一个项目iterable
从左到右,并返回总.start
默认为0
.iterable的项通常是数字,并且start
不允许该值为字符串.对于某些用例,有很好的替代方案
sum()
.连接字符串序列的首选快速方法是调用''.join(sequence)
.要以扩展精度添加浮点值,请参阅math.fsum()
.要连接一系列迭代,请考虑使用itertools.chain()
.版本2.3中的新功能.
难道你不认为开始应该是一个数字?为什么[]
可以写在这里?
(sum(a, []))
Run Code Online (Sandbox Code Playgroud) 给出多个列表,如下所示:
a = [1, 2, 3]
b = [5, 6, 7, 8]
c = [9, 0, 1]
d = [2, 3, 4, 5, 6, 7]
...
Run Code Online (Sandbox Code Playgroud)
我希望能够在开始从第二个列表中获取元素之前将它们组合起来从第一个列表中获取尽可能多的元素,因此结果将是:
result = [1, 2, 3, 8, 6, 7]
Run Code Online (Sandbox Code Playgroud)
有没有一种特别好的方式来写这个.没有for循环,我想不出一个非常简单的.也许列表理解与聪明的拉链.我有兴趣看看你们能想出什么.
提前致谢 :)