python - Python。如果我们从列表中获取 list() 函数会发生什么
问题描述
我有一个代码:
keys = {'a','e','i','o','u'}
value = [1]
vowels = { key : list(value) for key in keys }
print(vowels)
value.append(2)
print(vowels)
这段代码的结果:
{'a':[1],'e':[1],'i':[1],'o':[1],'u':[1]}
{'a':[1],'e':[1],'i':[1],'o':[1],'u':[1]}
以下代码:
keys = {'a','e','i','o','u'}
value = [1]
vowels = { key : value for key in keys }
print(vowels)
value.append(2)
print(vowels)
给了我另一个结果:
{'a':[1],'e':[1],'i':[1],'o':[1],'u':[1]}
{'a':[1,2],'e':[1,2],'i':[1,2],'o':[1,2],'u':[1,2]}
value
如果两者list(value)
都给出相同的列表对象,为什么会发生这种情况?
解决方案
该代码list(value)
创建了一个内容为 的新列表value
,因此如果您value
在之后修改,则没有效果。
value = [1] ---> a list instance
{
'u': [1], ----> a list instance copied from value
'a': [1], ----> a list instance copied from value
'e': [1], ----> a list instance copied from value
'i': [1], ----> a list instance copied from value
'o': [1] ----> a list instance copied from value
}
但是在vowels = {key: value for key in keys}
您将列表的唯一实例设置value
为每个键的值时,所有都指的是唯一列表[1]
,因此您修改它,您可以在字典中看到它,因为该列表正在使用
value = [1,2] ---> a list instance
{ ^
'u': [1, 2], -----| refers to value object
'a': [1, 2], -----| refers to value object
'e': [1, 2], -----| refers to value object
'i': [1, 2], -----| refers to value object
'o': [1, 2] -----| refers to value object
}
推荐阅读
- swift - 如何使用 Realm 解码这些模型?
- excel - 从 Excel 复制和粘贴到 Outlook
- multiprocessing - Python 多处理中的 Kafka 消费者
- powershell - 使用 Intune 安装 NXlog-CE
- javascript - 阻止 cookie 存储在浏览器中
- python-3.x - 在 python 问题中使用 shift() 函数对移动窗口建模
- python - 使用 selenium/python 点击“下一步”按钮后,Url 不会改变
- pandas - 读取excel并从合并单元格中提取单元格数据
- docusignapi - 是否可以使用 Docusign REST API 添加 HMAC 密钥以用于信封级别的 webhook
- unreal-engine4 - Unreal Engine UI - InvalidationBox 和 RetainerBox 在手机游戏中的正确用法是什么?