首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >筛选元组列表取决于是否在另一个列表中找到第二个元素

筛选元组列表取决于是否在另一个列表中找到第二个元素
EN

Stack Overflow用户
提问于 2022-05-04 13:38:42
回答 2查看 209关注 0票数 0

我需要创建一个从两个列表开始的列表:

代码语言:javascript
运行
复制
list_one = [1, 2, 3]

list_two = [('foo', 2), ('bar', 3), ('oof', 2), ('rab', 5)]

输出列表应该由在list_one中找到第二个元素的元组组成。

例如。

代码语言:javascript
运行
复制
[('foo', 2), ('bar', 3), ('oof', 2)]

我想到的愚蠢和(我认为)低效的方式:

代码语言:javascript
运行
复制
for i in list_one:
    for j in list_two:
        if i == j[1]:
            final_list.append(j)

有没有建议一个有效的版本(考虑更大的列表)?

EN

回答 2

Stack Overflow用户

发布于 2022-05-04 13:41:12

您可以使用列表理解。

代码语言:javascript
运行
复制
>>> list_one = [1, 2, 3]
>>>
>>> list_two = [('foo', 2), ('bar', 3), ('oof', 2), ('rab', 5)]
>>>
>>> list_one_unique_elements = set(list_one)
>>> [(first, second) for first, second in list_two if second in list_one_unique_elements]
[('foo', 2), ('bar', 3), ('oof', 2)]
票数 1
EN

Stack Overflow用户

发布于 2022-05-04 13:40:57

Python为检查元素是否为in (列表)提供了简洁的语法:

代码语言:javascript
运行
复制
result = []
for pair in list_two:
    _, value = pair
    if value in list_one:
        result.append(tuple)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72113937

复制
相关文章

相似问题

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