Python:使用 if 语句只打印一次匹配项

Python: Print each match just one time with if statement

我正在尝试检查其他列表中的字符串列表是否存在,它可能存在不止一次,所以当我打印结果时,结果中出现的次数超过 1 次,我希望它打印每个出现一次:

这是我到目前为止一直在做的事情:

    for i in range (0, len(spec)):
        if spec[i] in my_list:
            print ("R7:You mean:",spec[i])

spec 是一个字符串列表,正在尝试测试每个字符串是否存在于其他列表 (my_list) 中,字符串可能在 my_list 中重复(一个字符串可能存在超过一次)

输出得到:

R7:You mean: manège
R7:You mean: mangée
R7:You mean: manège
R7:You mean: mangée
R7:You mean: manège
R7:You mean: mangée
R7:You mean: manège
R7:You mean: mangée
R7:You mean: manège
R7:You mean: mangée
R7:You mean: manège
R7:You mean: mangée

预期输出:

R7:You mean: manège
R7:You mean: mangée

我遗漏了一些我不知道是什么的东西!

您可以使用集合理解而不是列表理解:

spec_unique = {result[:i]+s+result[i+1:]for i in range(len(result)) for s in L if s!=result[i]}
for s in spec_unique:
    if s in my_list:
        print ("R7:You mean:", s)

12 行 print 语句表明 print 语句是 运行 12 次,因为这是唯一被馈送到标准输出的 print 语句,并且该语句未嵌套在附加循环中。

这意味着 len(spec) >= 12。我认为 spec 中有 5 个重复的 2 个独特元素。

尝试:

uniq_spec = set(spec)
for item in uniq_spec:
    if item in my_list:
        print("R7:You mean:", item)

参见示例:

if __name__ == '__main__':
    str_list = ["words", "many", "many", "words"]
    word_list = ["mana", "many", "word", "words", "words", "again"]

    for item in set(str_list):
        if item in word_list:
            print(item)

    input()