gpt4 book ai didi

Python for-in 循环前面有一个变量

转载 作者:IT老高 更新时间:2023-10-28 21:37:52 24 4
gpt4 key购买 nike

我看到了一些类似的代码:

foo = [x for x in bar if x.occupants > 1]

这是什么意思,它是如何工作的?

最佳答案

目前的答案很好,但不要谈论它们只是syntactic sugar到一些我们非常习惯的模式。

让我们从一个例子开始,假设我们有 10 个数字,我们想要一个大于 5 的数字的子集。

>>> numbers = [12, 34, 1, 4, 4, 67, 37, 9, 0, 81]

对于上述任务,以下方法完全相同,从最冗长到简洁、易读和pythonic:

方法一

result = []
for index in range(len(numbers)):
if numbers[index] > 5:
result.append(numbers[index])
print result #Prints [12, 34, 67, 37, 9, 81]

方法 2(更简洁的 for-in 循环)

result = []
for number in numbers:
if number > 5:
result.append(number)
print result #Prints [12, 34, 67, 37, 9, 81]

方法3(输入列表理解)

result = [number for number in numbers if number > 5]

或更笼统地说:

[function(number) for number in numbers if condition(number)]

地点:

  • function(x) 接受一个 x 并将其转换为有用的东西(例如:x*x)
  • 如果 condition(x) 返回任何 False-y 值(False、None、空字符串、空列表等),那么当前迭代将被跳过(想想 continue)。如果函数返回一个非 False-y 值,则当前值将成为最终结果数组(并经过上述转换步骤)。

要以稍微不同的方式理解语法,请查看下面的奖励部分。

有关更多信息,请按照所有其他答案链接的教程进行操作:List Comprehension


奖金

(有点不像pythonic,但为了完整起见将其放在这里)

上面的例子可以写成:

result = filter(lambda x: x > 5, numbers)

上面的一般表达式可以写成:

result = map(function, filter(condition, numbers)) #result is a list in Py2

关于Python for-in 循环前面有一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6475314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com