Python检查项目是否在列表中

3

我想遍历两个列表并检查list_1中的项是否在list_2中。如果list_1中的项在list_2中,则我希望打印list_2中的项。如果该项不在list_2中,则我希望打印list_1中的项。以下代码部分实现了这一点,但由于执行了两个for循环,所以我得到了list_1的重复值。请用Pythonic的方式指导我完成这个问题?

list_1 = ['A', 'B', 'C', 'D', 'Y', 'Z']
list_2 = ['Letter A',
          'Letter C',
          'Letter D',
          'Letter H',
          'Letter I',
          'Letter Z']

for i in list_1:
    for x in list_2:
        if i in x:
            print(x)
        else:
            print(i)

当前输出:

Letter A
A
A
A
A
A
B
B
B
B
B
B
C
Letter C
C
C
C
C
D
D
Letter D
D
D
D
Y
Y
Y
Y
Y
Y
Z
Z
Z
Z
Z
Letter Z

期望输出:

Letter A
B
Letter C
Letter D
Y
Letter Z

1
当您的循环输出大约是列表长度相乘时,您如何期望获得6行输出? - OneCricketeer
1
我的意思是只有B。在list_1中的那个项目。 - MBasith
5个回答

2
你可以这样写:

你可以编写:

for i in list_1:
    found = False
    for x in list_2:
        if i in x:
            found = True
            break
    if found:
        print(x)
    else:
        print(i)

上述方法确保您打印 xi,并且我们每个元素仅打印一个值在 list_1 中。
您也可以编写以下内容(与上面的代码相同,但利用了向 for 循环添加 else 的能力):
for i in list_1:
    for x in list_2:
        if i in x:
            print(x)
            break
    else:
        print(i)

1
太好了!正是我想要的。第二种方法就是我想要实现的。感谢你的帮助! - MBasith

1
for i in list_1:
    found = False
    for x in list_2:
        if i in x:
            found = True
            print(x)
    if found == False:
        print(i)

0

一行代码:

[print(i) for i in ["Letter {}".format(i) if "Letter {}".format(i) in list_2 else i for i in list_1]]

输出:

Letter A
B
Letter C
Letter D
Y
Letter Z

-1
for i in list_1:
    for x in list_2:
        if i not in x:
            continue
        else:
            print(x)

-2
for i in range(len(list_1)):
  if list_1[i] in list_2[i]:
    print(list_2[i])
  else:
    print(list_1[i])

2
由于在两个列表中使用相同的索引,将会导致严重失败。 - Ofer Sadan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接