首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据第一个列表元组值删除两个列表中相同的索引元素

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

Stack Overflow用户
提问于 2018-07-25 16:05:40
回答 4查看 112关注 0票数 0

如果有两个Python列表,如下所示:

代码语言:javascript
复制
indices_tuple_list = [(1,1),(1,2),(3,1)]
values_list = ['a','b','c']

我想在这两个列表中删除基于给定值的相同索引。此值表示indices_tuple_list元组中的第二个元素。因此,如果匹配,则必须删除values_list中的元组和相应的元素。

示例:

给定值1:

成果清单:

代码语言:javascript
复制
indices_tuple_list = [(1,2)]
values_list = ['b']

考虑到价值2:

成果清单:

代码语言:javascript
复制
indices_tuple_list = [(1,1),(3,1)]
values_list = ['a','c']
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-25 16:18:43

使用zip和一个列表理解。

代码语言:javascript
复制
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))

输出

代码语言:javascript
复制
new_indices
[(1, 1), (3, 1)]
new_values
['a', 'c']
票数 1
EN

Stack Overflow用户

发布于 2018-07-25 16:08:52

代码语言:javascript
复制
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)

指纹:

代码语言:javascript
复制
[(1, 2)]
['b']

对于to_remove = 2,输出是:

代码语言:javascript
复制
[(1, 1), (3, 1)]
['a', 'c']
票数 0
EN

Stack Overflow用户

发布于 2018-07-25 16:12:39

代码语言:javascript
复制
def remove(value):
    for index, tuple in enumerate(indices_tuple_list):
        if tuple[1] == value:
            indices_tuple_list.pop(index)
            values_list.pop(index)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51523345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档