当我在列表中编写逻辑运算符以查找我想要的关键字但有点奇怪时

问题描述

我有一个这样的List_1

List_1 = ['1_1.jpg','1_1_right.jpg','1_1_left.jpg','1_2.jpg','1_2_right.jpg','1_2_left.jpg']

我使用以下代码获取我想要的特定字符串

List_2 = [i for i in List_1 if 'left'or'right' in i]

但它仍然给我与以下相同的列表

List_2 = ['1_1.jpg','1_2_left.jpg']

实际上,我想要的是这样的

List_2 = ['1_1_right.jpg','1_2_left.jpg']

解决方法

or在Python中不是这样,您必须先完成完整条件。

if 'left' or 'right' in i实际上是if 'left' or ('right' in i)

尝试:

if ('left' in i) or ('right' in i)
,

您绝对必须使用列表理解吗?您也可以为此使用常规的for循环:

List_1 = ['1_1.jpg','1_1_right.jpg','1_1_left.jpg','1_2.jpg','1_2_right.jpg','1_2_left.jpg']

expected = []

for i in List_1:
    if 'left' in i or 'right' in i:
        expected.append(i)

print(expected)