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

基于另一个列表修改列表元素的技术实现问询

基于另一个列表修改列表元素的技术实现问询

我现在有两个列表,具体如下:

list_a = [('gfhr_10_dfrght_sl', None, None), ('gfhr_11_dfrght_sl', None, None), ('mnop_yxt_done', None, None), ('mnop_yxt_gd', None, None), ('frdf_yxty_syn', None, None), ('ABC_XYZ1', 2, 0), ('ABC_XYZ2', 2, 0), ('ABC_XYZ3', 2, 0), ('ABC_XYZUL', 2, 0), ('ABC_JKL1', 1, 0), ('ABC_JKL2', 1, 0)]
list_b = ['ABC_XYZ1', 'ABC_XYZ2', 'ABC_XYZ3', 'ABC_XYZUL', 'mnop_yxt_done', 'mnop_yxt_gd', 'frdf_yxty_syn', 'ABC_JKL1', 'ABC_JKL2', 'DFG_OUT2_ATTgd', 'UHB']

我想要根据list_b里的元素来修改list_a中的对应项——如果list_a里元组的第一个元素存在于list_b中,就把该元组的第二个值改成1,其他情况保持不变。下面给你一个实用的实现方法:

实现思路

  • 先把list_b转换成集合,集合的成员查找效率远高于列表,能提升代码运行速度
  • 遍历list_a中的每个元组,判断其第一个元素是否在集合内
  • 因为元组是不可变类型,所以符合条件时需要创建新的元组替换原元组,不符合条件则直接保留原元组

代码示例

# 转换list_b为集合,优化查找效率
b_set = set(list_b)

# 处理list_a生成修改后的列表
modified_list_a = []
for item in list_a:
    if item[0] in b_set:
        # 生成新元组,替换第二个元素为1
        modified_item = (item[0], 1, item[2])
        modified_list_a.append(modified_item)
    else:
        modified_list_a.append(item)

# 输出结果
print(modified_list_a)

运行这段代码后,modified_list_a里符合条件的元组第二个元素都会被改成1,比如('mnop_yxt_done', 1, None)、('ABC_XYZ1', 1, 0),而不在list_b里的('gfhr_10_dfrght_sl', None, None)则保持原样。

备注:内容来源于stack exchange,提问作者Katrina Marrie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:14:32