Python - 列表搜索重复不匹配?

时间:2014-09-28 11:07:54

标签: python list sorting python-2.7 search

在这个python程序中,我试图在排序列表中实现搜索。

我面临的问题很简单,但我无法修复它。我想打印元素,当找到元素时,如果找不到元素,我想打印" Not Matched"。但问题在于它打印的每个元素" Not Matched"如果所选元素== sorted_list [i] 。我不想得到这个。我想得到"不匹配"一旦我要找的元素不在列表中。

这是代码。

for i in range(0, len(sorted_list)):
    if take_input == sorted_list[i]:
        print sorted_list[i]
    elif take_input != sorted_list[i]:
        print "Not Matched"

3 个答案:

答案 0 :(得分:1)

您可以将for ... else ...break声明一起使用:

for i in range(0, len(sorted_list)):
    if take_input == sorted_list[i]:
        print sorted_list[i]
        break  # get out of the for loop.
else:
    # This will be executed only if the `for` loop is not terminated with `break`.
    print "Not Matched"

如果您使用in operator,则无需进行迭代:

if take_input in sorted_list:
    print take_input
else:
    print "Not Matched"

BTW,如果你不需要索引,只需迭代序列,而不是使用索引。

答案 1 :(得分:1)

使用in检查take_input中是否有sorted_list,并且无需迭代sorted_list

if take_input in sorted_list:
    print take_input
else:
    print "Not Matched"

您无需使用范围迭代sorted_list即可使用:

for  i in sorted_list:
    if  i == take_input

如果您想要索引,则应使用enumerate

for ind, ele in enumerate(sorted_list): # ind is each index, ele each each element in the list
    if take_input == sorted_list[ind]:

答案 2 :(得分:0)

它可以这样工作。 (转换)

switch_found = 0

for i in range(0, len(sorted_list)):
    if take_input == sorted_list[i]:
        switch_found = 1
        break
# else it will continue 

if switch_found == 1:
    print sorted_list[i]
else:
    print "Not Matched"

这将确保它只打印一次找到的元素。如果开关未设置为1表示该元素不存在,则将打印“不匹配”(一次)。