我尝试用如下交换的方式扩展一个列表的列表:
# Consider the following list of lists
l_Of_l = [ [1], [2], [3], [4], [5], [6], [7]]
预期结果为:
l_extended = [ [1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6, 7]]
所以基本上,在公共扩展之后,列表的大小保持不变。
- 编辑:**
下面是我最初的做法:
l_Of_l = [ [1], [2], [3], [4], [5], [6], [7]]
lista = []
for i in l_Of_l:
lista.extend(i)
print(list([i for i in lista]))
但结果是:
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7]
有人知道如何以正确的方式实现这一点吗?
5条答案
按热度按时间xwmevbvl1#
使用来自itertools的累积:
fjnneemd2#
一种不用itertools的方法是使用Python的
sum
函数来连接列表。fnatzsnv3#
您需要一个累积和,只需要列表。
itertools.accumulate
可以做到这一点。mwngjboj4#
你也可以创建一个简单的列表解析:
w8ntj3qf5#
我想出了一个类似于Bill M的解决方案,只是有一点小区别,我只是一个学习Python的新手。
它的输出是一样的:[[1]、[1、2]、[1、2、3]、[1、2、3、4]、[1、2、3、4、5]、[1、2、3、4、5、6]、[1、2、3、4、5、6、7]]