栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

写给有基础的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的值)。然后这两个值会分别赋值给i和some_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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/222760.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号