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

Python for in循环前面有一个变量,python,for-loop,for-in-loop,Python,For Loop,For In Loop,在谷歌搜索之后,我想不出这是怎么回事。也许我没有找到合适的东西,但它在这里。非常感谢您在破解此速记时提供的任何信息。这将返回一个列表,其中包含酒吧中所有居住者>1的元素。这是一个 foo将是一个过滤后的条形图列表,其中包含属性为“占用者>1”的对象 bar可以是列表、集合、dict或任何其他iterable 下面是一个要澄清的例子 foo = [x for x in bar if x.occupants > 1] 据我所知,这种方法的工作原理是检查列表栏是否为空0或是否由单例1通过x组成

在谷歌搜索之后,我想不出这是怎么回事。也许我没有找到合适的东西,但它在这里。非常感谢您在破解此速记时提供的任何信息。

这将返回一个列表,其中包含酒吧中所有居住者>1的元素。

这是一个

foo将是一个过滤后的条形图列表,其中包含属性为“占用者>1”的对象

bar可以是列表、集合、dict或任何其他iterable

下面是一个要澄清的例子

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

据我所知,这种方法的工作原理是检查列表栏是否为空0或是否由单例1通过x组成。其中x是列表栏中定义的项目,可能具有占用者的特征。因此调用foo,遍历列表,然后返回通过检查条件x的所有项目

在Java这样的语言中,您需要构建一个名为x的类,其中“x”对象被分配给数组或类似的对象。X将有一个名为“占用者”的字段,每个索引将使用X.Accumbers方法进行检查,该方法将返回分配给占用者的编号。如果该方法返回的值大于1,那么我们假设作为部分占用者的int是奇数。正在对数组或类似问题调用的foo方法。然后将返回一个数组或类似的数组,如此容器数组的foo方法中所定义的或您所拥有的。返回数组的元素将是第一个数组thingie中符合大于1条件的“x”对象


Python具有通过列表理解的内置方法,以更简洁和大大简化的方式处理此问题。我没有实现两个完整的类和几个方法,而是编写了一行代码。

目前的答案很好,但不要谈论它们是如何与我们已经习惯的某种模式相适应的

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

>>> Bar.__repr__=lambda self:"Bar(occupants={0})".format(self.occupants)
>>> foo
[Bar(occupants=2), Bar(occupants=3)]
对于上述任务,以下方法完全相同,从最冗长到简洁、易读和通俗:

方法1 方法2稍微清洁,用于环路中 方法3输入列表理解 或者更一般地说: 其中:

functionx获取一个x并将其转换为一些有用的东西,例如:x*x 如果conditionx返回任何False-y值False、None、空字符串、空列表等。。然后将跳过当前迭代并继续。如果函数返回一个非False-y值,那么当前值将进入最终的结果数组,并完成上面的转换步骤。 要以稍微不同的方式理解语法,请查看下面的奖励部分

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

奖金 有点不符合python,但是为了完整起见,把它放在这里

上面的例子可以写成:

[function(number) for number in numbers if condition(number)]
result = filter(lambda x: x > 5, numbers)
上面的一般表达式可以写成:

[function(number) for number in numbers if condition(number)]
result = filter(lambda x: x > 5, numbers)

因为问题的编程部分已经被其他人完全回答了,所以很高兴知道它与数学的关系。实际上是:

通过以下方式定义集合:

B={xєA:Sx}

B是一个集合,其成员从a中选择, 所以B是B的子集⊂ A、 其中规定了以下特征: 函数S保持:Sx==True

使用列表理解定义B:

B=[x表示A中的x,如果Sx]

因此,为了使用构建B,从集合A中选择由x表示的B的成员,其中Sx==真包含条件


注:调用返回布尔值的函数S。

@Greg,我在Google上搜索了python*for*in*if,这是第一个成功的例子,请看我在回答中添加的示例。这个答案严格来说比公认的答案好,但没有标记,因为它是在4分钟后出现的;如果它只是x*x,它通常可能就在那里,而不是平方。当我看到这个表达式被压缩到一个lambda中时,我会感到更加痛苦,例如[x**2代表范围5中的x]与maplambda x:x**2,范围5。
result = [number for number in numbers if number > 5]
[function(number) for number in numbers if condition(number)]
result = filter(lambda x: x > 5, numbers)
result = map(function, filter(condition, numbers)) #result is a list in Py2