写给有基础的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
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦