列表理解列表列表

Posted

技术标签:

【中文标题】列表理解列表列表【英文标题】:List comprehension list of lists 【发布时间】:2014-02-25 18:08:55 【问题描述】:

我有一个列表列表,并且想使用列表推导将一个函数应用于列表列表中的每个元素,但是当我这样做时,我最终得到一个长列表而不是我的列表列表。

所以,我有

x = [[1,2,3],[4,5,6],[7,8,9]]
[number+1 for group in x for number in group]
[2, 3, 4, 5, 6, 7, 8, 9, 10]

但我想得到

[[2, 3, 4], [5, 6, 7], [8, 9, 10]]

我该怎么做?

【问题讨论】:

【参考方案1】:

从你的数据结构开始:

x = [[1,2,3],[4,5,6],[7,8,9]]

每个组都是一个三元组 [a,b,c],因此为了可读性,我考虑采用如下解决方案:

«从列表中取出每个组 [a,b,c] 并提供 [a+1,b+1,c+1] 的列表 »

x_increased = [ [a+1,b+1,c+1] for [a,b,c] in x ]

【讨论】:

【参考方案2】:
lista = [[i+3*(j-1) for i in range(1,4)] for j in range(1,4)]

print(lista)
# outputs [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

【讨论】:

欢迎来到 SO!在制作答案时,重要的是要包含一些关于代码正在做什么以创建更强大的答案的解释。如果您需要更多帮助,请查看how to answer。【参考方案3】:

使用这个:

[[number+1 for number in group] for group in x]

如果你知道地图,也可以使用这个:

[map(lambda x:x+1 ,group) for group in x]

【讨论】:

我意识到 OP 正在使用 python2,但是对于看到使用 python3 的未来用户,map 返回一个 map 对象,因此您必须执行 [list(map(lambda x:x+1 ,group)) for group in x] 才能得到相同的结果。 哦,谢谢。我现在已经习惯了Python2.7.2,以后会尝试使用Python3。

以上是关于列表理解列表列表的主要内容,如果未能解决你的问题,请参考以下文章

Python IZIP 列表理解返回空列表

为啥列表理解比附加到列表要快得多?

有效地构建数字和列表的列表理解

嵌套列表上的列表理解?

遍历两个列表的列表理解没有按预期工作[重复]

多个列表的产品-单个列表与列表数组,需要帮助理解[重复]