相关疑难解决方法(0)

如何从列表列表中制作一个平面列表?

我想知道是否有一条快捷方式可以在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)

python list flatten multidimensional-array

2950
推荐指数
29
解决办法
184万
查看次数

内置函数sum与sum(list,[])有什么关系?

当我想展开一个列表时,我找到了如下方式:

>>> 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)

python

21
推荐指数
2
解决办法
7233
查看次数

从多个列表中获取元素

给出多个列表,如下所示:

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循环,我想不出一个非常简单的.也许列表理解与聪明的拉链.我有兴趣看看你们能想出什么.

提前致谢 :)

python list

1
推荐指数
1
解决办法
51
查看次数

标签 统计

python ×3

list ×2

flatten ×1

multidimensional-array ×1