python的for语句放在后面的用法

在阅读某位大佬的源码时发现for语句的另外一种用法,for语句放在整条语句的后面,心生疑惑,于是将那段代码运行一遍发现没报错,然后通过查阅资料和自己写代码的测试,由于可供查阅的文章有限,我现在也是一知半解,如发现不对请告知我。

for语句放在后面以前也知道,就是列表推导式,例如:

l = [ i for i in range(10)]

一直以为这种写法只能用来写列表推导式,但是他还能这样用

s1 = ''.join(
        random.choice(string.digits + string.ascii_letters)
        for i in range(1000)
    )
"""
相当于
s2 = ''
for i in range(1000):
    s2.join(random.choice(string.digits + string.ascii_letters))
"""


li = [i for i in range(2000) if i % 2 == 0]
d1 = {li.pop() : i for i in range(1000)}
"""
相当于
li = [i for i in range(2000) if i % 2 == 0]
d2 = {}
for i in range(1000):
    d2[li.pop()] = i

"""

语句不难理解,很直观,但是为什么这样的用法一般是用在列表推导式中,用在字典推导式(不知道怎么叫,暂且这么叫)中的却很少。然后我在测试时发现列表推导式比用普通循环处理列表时快,但是在字典中确是很不稳定,大部分时候是普通循环比字典推导式的运行速度快,至于其他用法可能是出现的场景比较少吧。

至于为什么列表推导式会快详情请百度。

越学越发现自己无知,心累。。。。

 

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值