当前位置: 首页 > 面试题库 >

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

姜钊
2023-03-14
问题内容
foo = [x for x in bar if x.occupants > 1]

在谷歌上搜索并搜索之后,无法弄清楚它的作用。也许我不是在搜索正确的内容,而是在这里。非常感谢你对取消此速记的任何输入。


问题答案:

当前的答案是好的,但不会谈论它们只是我们习惯的某种模式的语法糖。

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

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

对于上面的任务,下面的以下方法是完全相同的,并且从最冗长到简洁,易读和pythonic:

方法1

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值,则当前值将其返回到最终的结果数组(并通过上面的转换步骤)。
    要以稍微不同的方式理解语法,请查看下面的“奖金”部分。

有关更多信息,请按照教程中的所有其他答案进行链接:列表理解

奖金

(略显非Python语言,但出于完整性考虑,将其放在此处)

上面的示例可以写成:

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

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

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


 类似资料:
  • for ... in循环用于循环对象的属性。 以下是'for ... in'循环的语法。 for (variablename in object) { statement or block to execute } 在每次迭代中,来自对象的一个​​属性被分配给变量名称,并且此循环继续,直到对象的所有属性都用完为止。 例子 (Example) var obj = {a:1, b:2,

  • for ... in循环用于循环对象的属性。 以下是'for ... in'循环的语法。 for (variablename in object){ statement or block to execute } 在每次迭代中,来自对象的一个​​属性被分配给变量名称,并且此循环继续,直到对象的所有属性都用完为止。 例子 (Example) void main() { var

  • 和 in 操作符一样,for in 循环同样在查找对象属性时遍历原型链上的所有属性。 注意: for in 循环不会遍历那些 enumerable 设置为 false 的属性;比如数组的 length 属性。 // 修改 Object.prototype Object.prototype.bar = 1; var foo = {moo: 2}; for(var i in foo) { c

  • Swift 循环 Swift for-in 循环用于遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符。 语法 Swift for-in 循环的语法格式如下: for index in var { 循环体 } 流程图: 实例 1 import Cocoa for index in 1...5 { print("\(index) 乘于 5 为:\(i

  • 我的代码是: 这似乎不会在我的变量列表中循环。有什么想法吗?提前致谢

  • 我正在构建一个gradebook来存储学生和教师,每个学生和教师都有一个唯一的ID,以及他们各自在Student和Teacher对象的ArrayList中注册或教学的类。我有文件夹路径“j:/compsci/类/”,为每个类存储一个文本文件。 文本文件格式: 第1行:班级名称、教师ID、期间、荣誉?、班级ID 第2行:班级中每个学生的学生ID(用逗号分隔)。 在这里,我初始化了每个学生正在接受的所