Python for in循环前面有一个变量
在谷歌搜索之后,我想不出这是怎么回事。也许我没有找到合适的东西,但它在这里。非常感谢您在破解此速记时提供的任何信息。这将返回一个列表,其中包含酒吧中所有居住者>1的元素。这是一个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
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
- 如果
返回任何False-y值(False、None、空字符串、空列表等),则将跳过当前迭代(认为条件(x)
)。如果函数返回一个非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中选择, 因此B是a(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