Python:使用if语句

时间:2017-12-31 13:19:59

标签: python python-3.x list if-statement find-occurrences

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

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

2 个答案:

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

答案 1 :(得分:0)

12行print语句表示print语句运行12次,因为这是唯一被送到stdout的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()