Skip to main content
 首页 » 编程设计

python之在 Python 中使用 "if value in list"从迭代器中获取匹配值

2025年05月04日18zhenyulu

我正在运行以下代码:

if course_name.lower() in [x.split('.')[0].lower() for x in user_courses]: 
    do_code() 

当 do_code() block 运行时,我知道 course_name.lower() 在列表中匹配。有没有办法在 course_name.lower() 匹配的列表中获取 x 的值?如您所见,因为我在创建列表时使用了 [0] 索引

[x.split('.')[0].lower() for x in user_courses] 

我想要它匹配的 user_courses 的整个值,而不仅仅是 course_name.lower() 包含的零索引值。

谢谢!

请您参考如下方法:

你可以反过来做:

lower_name = course_name.lower() 
matches = [x for x in user_courses if x.split('.')[0].lower() == lower_name] 
if matches: 
    match = matches[0] 
    # match is the matched name 

也就是说,根据与 course_name.lower() 的相等性过滤您的列表理解。如果列表中还有任何内容,则它将等于 course_name.lower()。 (理论上列表中可能还有多个项目,但如果是这样的话,它们都是相等的,所以我们可以只取第一个。)

我从列表理解中提取了 course_name.lower() 的计算,以避免重复重新计算它。