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

问题描述 投票:-2回答:2

我试图检查其他列表中是否存在字符串列表,它可能存在多次,所以当我打印结果时,结果中出现的次数超过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

我错过了一些我不知道它是什么!

python python-3.x list if-statement find-occurrences
2个回答
0
投票

12行print语句表明print语句运行12次,因为这是唯一的print语句被输入到stdout,并且该语句没有嵌套在一个额外的循环中。

这意味着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()

2
投票

您可以使用set comprehension而不是list comprehension:

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)
© www.soinside.com 2019 - 2024. All rights reserved.