Python中如何获取与指定元素索引列表关联的另一列表元素?
嘿,既然你已经成功获取到了列表A中元素2的所有索引,那提取列表B对应位置的元素其实有两种非常简洁高效的方法,一起来看看:
方法1:列表推导式(最直观的Pythonic写法)
这是Python处理这类需求最常用的方式,代码简洁易懂,完全贴合你的需求:
# 你已经得到的索引列表 idxs = [2, 3, 4, 5] # 目标列表B B = [1, 4, 2, 4, 3, 1, 2, 3, 2] # 提取对应索引的元素 C = [B[i] for i in idxs] print(C) # 输出结果: [2, 4, 3, 1]
这种写法本质就是遍历索引列表里的每一个值,取出列表B对应位置的元素,逻辑清晰,对于大多数日常场景来说效率完全足够。
方法2:使用operator.itemgetter(大数据量下更高效)
如果你的索引列表特别长,或者需要频繁执行这类提取操作,operator.itemgetter会是更好的选择——它基于底层C实现,比纯Python循环的列表推导式速度更快:
from operator import itemgetter idxs = [2, 3, 4, 5] B = [1, 4, 2, 4, 3, 1, 2, 3, 2] # 一次性获取所有指定索引的元素 C = list(itemgetter(*idxs)(B)) print(C) # 输出结果: [2, 4, 3, 1]
这里itemgetter(*idxs)会生成一个专门的取值函数,传入列表B后,它会一次性取出所有目标索引的元素并返回元组,最后转成列表就得到了你想要的结果。
这两种方法都能完美解决你的问题,你可以根据实际的场景复杂度来选择~
内容的提问来源于stack exchange,提问作者Stefano Fedele
相关产品推荐
相关产品推荐

