Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python for in循环前面有一个变量_Python_For Loop_For In Loop - Fatal编程技术网

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

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

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

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

这是一个

foo
将是一个过滤后的
bar
列表,其中包含属性为accumbers>1的对象

可以是
列表
集合
目录
或任何其他可编辑项

下面是一个要澄清的例子

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

就我所知,这种方法应该是检查列表“栏”是否为空(0)或由单个(1)通过x.acculations组成,其中x是列表栏中的定义项,可能具有acculator的特征。因此调用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(输入列表理解) 或者更一般地说: 其中:

  • 函数(x)
    获取一个
    x
    并将其转换为有用的东西(例如:
    x*x
  • 如果
    条件(x)
    返回任何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:S(x)}

英语翻译:B是一个集合,其成员从a中选择, 因此Ba(B)的子集⊂ A) ,其中 函数S保持:
S(x)=True

使用列表理解定义B

B=[x表示A中的x,如果S(x)]

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


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

@Greg,我搜索了
python“*for*in*if”
,这是第一次点击查看我添加到回答中的示例。这个答案严格地说比公认的答案好,但是没有这样标记,因为它是在4分钟后出现的;如果它只是
x*x
,它通常可能就在那里,而不是
square(x)
。当我看到这个表达式被封装到lambda中时,它会让人更加痛苦,例如
[x**2代表范围(5)内的x]
映射(lambda 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