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

如何避免列表重复选取同一元素?关联列表匹配异常解决

问题分析与解决方法

你的代码之所以得到重复的[1,1],核心问题是**B.index(i)方法只会返回列表中第一个匹配元素的索引**。当循环到B里第二个23时,它依然返回第一个23的索引0,所以重复取到了A[0]对应的产品1。

解决方法1:遍历索引直接匹配

直接遍历列表的索引范围,通过索引同时访问A和B的对应元素:

A = [1,2,3,4,5,6,7]
B = [23,25,34,23,24,10,45]
Prod_23 = []
for idx in range(len(B)):
    if B[idx] == 23:
        Prod_23.append(A[idx])

解决方法2:用enumerate同时获取索引和元素

enumerate可以在遍历B时同时拿到当前元素的索引和值,写法更简洁:

A = [1,2,3,4,5,6,7]
B = [23,25,34,23,24,10,45]
Prod_23 = []
for idx, price in enumerate(B):
    if price == 23:
        Prod_23.append(A[idx])

解决方法3:列表推导式(一行完成)

Python中处理这类筛选场景最常用的方式,代码简洁且高效:

A = [1,2,3,4,5,6,7]
B = [23,25,34,23,24,10,45]
Prod_23 = [A[idx] for idx, price in enumerate(B) if price == 23]

以上三种方法最终得到的Prod_23结果都是[1,4],完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:35:16