我有一个字符串列表
["oranges", "POTATOES", "Pencils", "PAper"]
我想查找列表是否包含
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"?
澄清:
我的列表实际上是一个列表列表,我的逻辑使用以下结构:
if not any ( item in x for x in stuff):
print "Not found"
else:
print "found"
最佳答案
我将 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
这将短路并在找到后立即停止搜索(与 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
不过,同样的规则也成立。如果您要进行多次搜索,最好将列表列表规范化一次。
关于Python 2.7 : find item in list ignoring case,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13809299/