1
a = [['jimmy', '25', 'pancakes'], ['tom', '23', 'brownies'], ['harry', '21', 'cookies']]
for i in range(len(a)):
    if (a[i][1] == '20' or a[i][1] == '26'):
        print 'yes'
    else:
        print 'Not found'

这个输出是Not found三倍。如果 if 循环的每次迭代的输出都相同,我希望它遍历整个列表,然后Not found只打印一次。

如果我改变a[i][1] == '25'并且输出变为:

yes
Not found
Not found

我想打印yes但不是Not found

4

1 回答 1

2

可能是您正在寻找for-else循环。

正如@Burhan Khalid 建议的for i in a那样,如果range(len(a))

a = [['jimmy', '25', 'pancakes'], ['tom', '23', 'brownies'], ['harry', '21', 'cookies']]
for i in a:
    if (i[1] == '25' or i[1] == '26'):
        print 'yes'
else:
    print 'Not found'

输出:

yes
Not found

或者您可能正在寻找any()

In [200]: if any((i[1]=='25' or i[1]=='26') for i in a):
    print 'yes'
else:    
    print 'not Found'
   .....: 


yes

In [204]: if any((i[1]=='20' or i[1]=='26') for i in a):
    print 'yes'
else:    
    print 'not Found'
   .....: 


not Found
于 2012-10-24T15:46:58.210 回答