Python检查Items是否在列表中

时间:2017-07-16 15:30:41

标签: python list loops

我正在尝试遍历两个列表并检查list_1中的项是否在list_2中。如果list_1中的项目在list_2中,我想在list_2中打印该项目。如果该项目不在list_2中,我想从list_1打印该项目。下面的代码部分完成了这一点,但因为我正在执行两个for循环,所以我得到了list_1的重复值。你能用Pythonic的方式指导我完成吗?

alias python=/usr/bin/python2.7

当前输出:

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

4 个答案:

答案 0 :(得分: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中为每个元素打印一个值。

您也可以编写(与上面的内容相同,但使用了向else循环添加for的功能):

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

答案 1 :(得分: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)

答案 2 :(得分:0)

Oneliner:

[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

答案 3 :(得分:-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])