发布于2019-10-07 19:32 阅读(1249) 评论(0) 点赞(0) 收藏(5)
昨天我在这个问题中看到了一些以前从未见过的代码,尤其是以下行:
for xyz[num] in possible[num]:
...
因此,在运行此循环时,from possible[num]
中的元素将分配到list xyz
的position处num
。我对此感到非常困惑,所以我做了一些测试,下面是一些等效的代码,它更加明确:
for value in possible[num]:
xyz[num] = value
...
我绝对打算一直使用第二种格式,因为我发现第一种格式比它值得的更令人困惑,但是我很好奇...所以:
是否有充分的理由使用此“功能”,如果没有,为什么要允许它?
这是我想到的几个愚蠢的用例(愚蠢的用例,因为有更好的方法可以执行相同的操作),第一个是将字母表中的字母旋转13个位置,第二个是创建字典来将字符从rot13映射到距离字符13的位置。
>>> import string
>>> rot13 = [None]*26
>>> for i, rot13[i%26] in enumerate(string.ascii_lowercase, 13): pass
...
>>> ''.join(rot13)
'nopqrstuvwxyzabcdefghijklm'
>>> rot13_dict = {}
>>> for k, rot13_dict[k] in zip(rot13, string.ascii_lowercase): pass
...
>>> print json.dumps(rot13_dict, sort_keys=True)
{"a": "n", "b": "o", "c": "p", "d": "q", "e": "r", "f": "s", "g": "t", "h": "u", "i": "v", "j": "w", "k": "x", "l": "y", "m": "z", "n": "a", "o": "b", "p": "c", "q": "d", "r": "e", "s": "f", "t": "g", "u": "h", "v": "i", "w": "j", "x": "k", "y": "l", "z": "m"}
允许这样做的原因是简单性。“循环变量”列表的语法与任何其他分配目标相同。例如,分配中允许元组拆包,因此for
循环中也允许元组拆包,这当然非常有用。在我看来,为循环变量的分配定义一种单独的语法似乎是人为的-常规分配和循环变量分配的语义是相同的。
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/133146/fe8354c997af5c4c367b/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!