You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中仅通过列表操作筛选第二列小于30的子列表?

解决列表筛选问题的纯列表操作方法

嘿,我来帮你搞定这个问题~你之前写的列表推导式出错的原因很简单:你在for循环里写了for x in len(A),但len(A)返回的是一个整数(这里是7),整数不是可迭代对象,而且就算能遍历,x会是单个数字,自然没法用x[1]去取子列表的元素啦。

下面给你两种纯列表操作的正确方法:

方法一:修正后的列表推导式

这是最常用也最直观的方式,直接遍历原列表A里的每个子列表,判断第二个元素是否小于30:

A = [ [0, 42, 2.6], [1, 20, 5.6], [2, 67, 3.5], [3, 12, 3.2], [4, 34, 1.1], [5, 74, 4.7], [6, 29, 2.9] ]
B = [x for x in A if x[1] < 30]
print(B)

运行后就能得到你想要的结果:[[1, 20, 5.6],[3, 12, 3.2],[6, 29, 2.9]]。

方法二:使用filter()函数

如果你喜欢函数式编程的风格,也可以用filter()配合匿名函数来实现:

B = list(filter(lambda x: x[1] < 30, A))

filter()会逐个把A中的子列表传给lambda函数,只保留满足x[1] < 30条件的元素,最后用list()把过滤后的结果转换成列表即可,效果和列表推导式完全一致。

内容的提问来源于stack exchange,提问作者urgeo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:48:11