为了账号安全,请及时绑定邮箱和手机立即绑定

疯狂的Python-05(神奇赋值法)

标签:
Python

webp

写给有基础的Python程序员,一些有趣的鲜为人知的Python特性集合

无论你是Python新手还是Python老手,我相信,这个系列的文章都会让你获益良多!

阅读此系列任何文章前请务必观看:疯狂的Python-目录大纲


神奇赋值法

some_string = "crazy"some_dict = {}for i, some_dict[i] in enumerate(some_string):    pass

Output:

>>> some_dict # 一个带引索的字典被创建.{0: 'c', 1: 'r', 2: 'a', 3: 'z', 4: 'y'}

解释:

  • 一个 for 语句在Python语法中是这么定义的:

    for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite]

    exprlist 是一组被赋值的变量. 这就等于说这组变量在每次迭代开始的时候都会执行一次 {exprlist} = {next_value}
    下面这个例子很好的解释了上面想要表达的意思:

    for i in range(4):    print(i)
        i = 10

    Output:

    0
    1
    2
    3

    是不是以为上面的循环就会执行一次?

    解释:

    • 在上面这个循环中,i=10这个赋值语句不会整个迭代过程产生任何影响。因为在每次迭代开始前,迭代函数(在这里是range(4))都会把下一次的值赋值给目标变量(在这里是i)。

  • 再来看上面的例子,enumerate(some_string)这个函数会在每次迭代的时候产生两个值,分别是i(一个从0开始的索引值)和一个字符(来自some_string的值)。然后这两个值会分别赋值给isome_dict[i]。把刚才的循环展开来看就像是下面这样:

    >>> i, some_dict[i] = (0, 'c')>>> i, some_dict[i] = (1, 'r')>>> i, some_dict[i] = (2, 'a')>>> i, some_dict[i] = (3, 'z')>>> i, some_dict[i] = (4, 'y')>>> some_dict



作者:秦洛1023
链接:https://www.jianshu.com/p/f55672bcd91a


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消