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

Python如何根据另一列表的筛选条件获取对应位置的目标元素

错误原因

  1. 原生Python列表不支持将列表作为索引批量取值,只有numpy数组支持该特性,因此你写的names[pos]会触发TypeError: list indices must be integers or slices, not list错误。
  2. 你后续写的遍历代码只对变量x做了累加操作,既没有从names列表取值,也没有把结果存入新列表,因此无法得到目标数据。

方案1:直接配对筛选(推荐)

用zip()将姓名和城市一一配对,直接遍历筛选即可,不需要额外计算索引:

names = ['vik', 'zed', 'loren', 'tal', 'yam', 'jay', 'alex', 'gad', 'dan', 'hed']
cities = ['NY', 'NY', 'SA', 'TNY', 'LA', 'SA', 'SA', 'NY', 'SA', 'LA']
ages = ['28', '26', '26', '31', '28', '23', '29', '31', '27', '41']

sa_names = [name for name, city in zip(names, cities) if city == 'SA']
print(sa_names)

运行输出:

['loren', 'jay', 'alex', 'dan']

方案2:基于索引取值(适配原有思路)

如果你需要保留先计算符合条件的索引的逻辑,遍历索引列表逐个取值存入新列表即可:

pos = [i for i in range(len(names)) if cities[i] == 'SA']
sa_names = []
for idx in pos:
    sa_names.append(names[idx])
print(sa_names)

运行结果和方案1完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:45:10