python的for语句结束_在python中使用for循环结束

在早期版本的Python中,引入了列表推导的概念来消除这两种代码模式:

# Go through each item in a list and run a test on them

# build a new list containing only items that pass the test

results = []

for item in somelist:

if sometest(item):

results.add(item)

and

# build a new list by changing every item in a list in the

# same way

results = []

for item in somelist:

results.add(2 * item)

通过添加一个新语法,包括将所有三个事物合二为一 – 更改项目和/或测试它们以仅在结果中包含一些项目,并创建结果列表:

results = [2 * item for item in somelist if sometest(item)]

# results is a list

此功能使用[]语法在Python中指示“list”,并在内存中立即构建列表.

有时候你不需要或者不需要内存中建立的整个列表,所以后来的Python版本引入了生成器表达式 – 相同的想法,但它们通过快速返回一个你可以迭代的生成器来节省内存,就像它是一个列表一样,并在您使用它时构建列表.

但它们不能具有相同的语法并且可以直接换出,因为它们的行为略有不同,因此它们使用()代替[],例如:

somelist = [1,2,3,4,5]

results = (2 * item for item in somelist if sometest(item))

# results is a generator

如果您尝试使用此函数调用函数,则会得到两层括号:

function((2 * item for item in somelist))

这看起来很傻,所以你可以留下一个:

function(2 * item for item in somelist)

这似乎是循环独立的循环,但实际上并非如此.

所以用括号你可以这样写:

>>> print (item for item in [1,2,3])

at 0x7fe31b8663c0>

哪个是你写的最接近的东西,它是Python 2.x中的有效语法,但它不能达到预期的效果,^^就是它的作用和原因.

或这个:

>>> print [item for item in [1,2,3]]

[1,2,3]

它生成一个列表并打印列表,另一个与你写的内容相近,但仍然不是你所期望的.

– (在我写这篇文章的时候,我的帖子确实没有太多意义,但是呃).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值