为了账号安全,请及时绑定邮箱和手机立即绑定

根据第一个列表元组值在两个列表中删除相同的索引元素

根据第一个列表元组值在两个列表中删除相同的索引元素

弑天下 2021-05-03 12:16:26
如果我有两个如下的Python列表:indices_tuple_list = [(1,1),(1,2),(3,1)]values_list = ['a','b','c']我想在两个列表中都删除基于给定值的相同索引。此值表示indices_tuple_list元组中的第二个元素。因此,如果匹配,则values_list必须删除元组和中的相应元素。例子:给定值1:结果列表:indices_tuple_list = [(1,2)]values_list = ['b']给定值2:结果列表:indices_tuple_list = [(1,1),(3,1)]values_list = ['a','c']
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

使用zip和列表理解。


remove_val = 2

result = [i for i in zip(indices_tuple_list, values_list) if i[0][1] != remove_val]

result

[((1, 1), 'a'), ((3, 1), 'c')]


new_indices, new_values = map(list, zip(*result))

输出


new_indices

[(1, 1), (3, 1)]

new_values

['a', 'c']


查看完整回答
反对 回复 2021-05-11
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

to_remove = 1


indices_tuple_list = [(1,1),(1,2),(3,1)]

values_list = ['a','b','c']


new_indices_tuple_list = [v for v in indices_tuple_list if v[1] != to_remove]

new_value_list = [v for i, v in enumerate(values_list) if indices_tuple_list[i][1] != to_remove]


print(new_indices_tuple_list)

print(new_value_list)

印刷:


[(1, 2)]

['b']

对于to_remove = 2输出是:


[(1, 1), (3, 1)]

['a', 'c']


查看完整回答
反对 回复 2021-05-11
  • 3 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信