Python 2.7:在列表中查找忽略大小写的项目

kas*_*ere 3 python python-2.7

我有一个字符串列表

["oranges", "POTATOES", "Pencils", "PAper"]
Run Code Online (Sandbox Code Playgroud)

我想查找列表是否包含paper,忽略大小写; 以便打印以下代码段found.我的列表只包含仅由英文字母组成的简单字符串 - 大写和小写.

item = 'paper'
stuff = ["oranges", "POTATOES", "Pencils", "PAper"]
if item in stuff:
    print "found"
else:
   print "Not found"

#How do I get the method to print "found"?
Run Code Online (Sandbox Code Playgroud)

澄清:

我的列表实际上是一个列表列表,我的逻辑使用以下构造:

if not any ( item in x for x in stuff):
   print "Not found"
else:
   print "found"
Run Code Online (Sandbox Code Playgroud)

DSM*_*DSM 15

我结合lower使用any:

>>> stuff = ["oranges", "POTATOES", "Pencils", "PAper"]
>>> any(s.lower() == 'paper' for s in stuff)
True
>>> any(s.lower() == 'paperclip' for s in stuff)
False
Run Code Online (Sandbox Code Playgroud)

这将短路并在找到一个时停止搜索(与listcomp不同).OTOH,如果您要进行多次搜索,那么您也可以使用listcomp来降低整个列表一次.

对于你的更新案例(为什么没有人问他们感兴趣的问题,而是另一个问题呢?),我可能会做类似的事情

>>> any("book" in (s.lower() for s in x) for x in stuff)
True
>>> any("paper" in (s.lower() for s in x) for x in stuff)
True
>>> any("stuff" in (s.lower() for s in x) for x in stuff)
False
Run Code Online (Sandbox Code Playgroud)

但是,同样的规则也适用.如果您正在进行多次搜索,那么您可能最好将列表列表规范化一次.