Python中if语句中的生成器
或者说如何在修改后的列表中使用if语句。
我在StackOverflow上看了很久(感谢大家)。我非常喜欢这个网站。我还发现你可以自己提问并回答。抱歉如果我重复了,但我没有在StackOverflow上找到这个特定的答案。
- 我该如何检查一个元素是否在列表中,同时又能修改这个列表呢?
我的问题是:
myList = ["Foo", "Bar"]
if "foo" in myList:
print "found!"
因为我不知道这个元素在列表中的大小写,所以我想用小写的列表来进行比较。显而易见但又不太优雅的答案是:
myList = ["Foo", "Bar"]
lowerList = []
for item in myList:
lowerList.append(item.lower())
if "foo" in lowerList:
print "found!"
我能做得更好吗?
5 个回答
0
请不要把“list”当作变量名,这里有一个版本,它把生成器放到了一个变量里,并展示了在找到答案后生成就停止了,而没有把生成器用完:
list_to_search = ["Foo", "Bar"]
lowergen = (item.lower() for item in list_to_search)
if "foo" in lowergen:
print "found!"
print next(lowergen), 'is next after it'
1
列表推导式:
mylist = ["Foo", "Bar"]
lowerList = [item.lower() for item in mylist]
然后你可以做一些像 if "foo" in lowerlist
这样的事情,或者完全不使用临时变量,直接用 if "foo" in [item.lower() for item in mylist]
。
8
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它放到另一个地方。这就像是把水从一个杯子倒到另一个杯子一样。
有些时候,我们会遇到一些问题,比如数据格式不对,或者数据不完整。这就像是你想把水从一个杯子倒到另一个杯子,但发现第一个杯子里有一些杂物,导致水倒不出来。
为了避免这些问题,我们可以使用一些工具和方法来确保数据的正确性和完整性。这就像是使用一个过滤器,先把杂物去掉,再把水倒到另一个杯子里。
总之,处理数据时要注意数据的质量,确保它们是干净和完整的,这样才能顺利地完成我们的任务。
if any(s.lower() == "foo" for s in list): print "found"