python for in语句_Python for-in循环前面有一个变量

小编典典

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

让我们从一个例子开始,假设我们有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

2020-02-16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值