在列表列表中如何获取除每个列表的最后一项之外的所有项目?

时间:2016-10-01 09:40:09

标签: python list python-3.x

所以我有这份清单。每个嵌套列表都有n+1元素,其中第一个元素是浮点数,最后一个元素是整数。我需要为每个嵌套列表获取所有浮点数(因此n+1中的n个元素)。哪种方法最好?

例如:

x = [[0.1, 0.2, 1], [0.4, 0.05, 16], [0.3, 0.3, 5]]
output = [[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]]

2 个答案:

答案 0 :(得分:5)

这是最短最简单的方法:

print(x)
[[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]]

它被称为list comprehension

答案 1 :(得分:3)

如果您某些int将永远是最后一个,切片是一个选项,可以修剪{{1}中每个子列表sub的最后一个元素使用xsub[:-1]表示抓取除最后一个元素之外的所有内容):

[:-1]

或者,您可以通过迭代out = [sub[:-1] for sub in x] # or sub[:2] if sub is always 3 elements long print(out) [[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]] 的元素,遍历每个子元素并评估它是否是x的实例来完成此操作,即:

float

这会筛选列表out = [[i for i in sub if isinstance(i, float)] for sub in x] 中的任何元素,该列表是sub中不属于x类型实例的子列表。无论定位,它都可以运行,因此如果float的位置并不总是最后的话,您可以使用

int

最后,对于就地方法,print(out) [[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]] 循环和for是一个可行的选择:

pop

现在for s in x: _ = s.pop() 变异为:

x