Python中if语句中的生成器

5 投票
5 回答
8299 浏览
提问于 2025-04-16 02:24

或者说如何在修改后的列表中使用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"

撰写回答