我有一个字符串列表
["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"
答案 0 :(得分:13)
我将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
同样的规则也适用。如果您正在进行多次搜索,那么您可能最好将列表列表规范化一次。
答案 1 :(得分:2)
您可以使用List Comprehension将列表转换为小写。
if item in [x.lower() for x in stuff]:
print "found"
else:
print "not found"
stuff = [“oranges”,“POTATOES”,“Pencils”,“PAper”] print [x.lower()for x in stuff]
['oranges','potato','pencil','paper']
答案 2 :(得分:1)
将两个字符串转换为大写字母或小写字母并进行比较?
item = 'paper'
stuff = ["oranges", "POTATOES", "Pencils", "PAper"]
if item.upper() in map(lambda x: x.upper(), stuff):
print "found"
else:
print "Not found"
额外: 然后使用这一行
if not any ( item.upper() in map(lambda y: y.upper(), x) for x in stuff):
答案 3 :(得分:1)
不是python buff,而且通常是编程的新手,但是,这是我的解决方案:
我试图接近你的一般方法,但是你可能想要考虑在函数中封装代码。
我不知道你的经验水平,所以请原谅我发布你已经熟悉的东西
这里有一些关于功能的一般信息: wikipedia
这里有关于函数的Pythons文档: Python Documentation
第一个解决方案,冗长但对于新手来说更容易理解:
def item_finder_a(item, stuff):
new_array = []
for w in stuff:
new_array.append(w.lower())
if item in new_array:
print "found"
else:
print "Not found"
item_finder(word,array_of_words)
稍微简短一点的版本
def item_finder_b(item, stuff):
if item in map(str.lower,stuff):
print "found"
else:
print "Not found"
item_finder_b(word,array_of_words)
希望这有帮助
干杯
答案 4 :(得分:0)
您可以使用lower
功能,而不是使用现有功能。
for strings in stuff:
if strings.lower() == item:
print "found"
print "Not found"