我面临的情况是我无法破解背后的逻辑。
我有一段代码
user_id = user_email = []
for id, email in users:
# users is a tuple of tuples that looks like ((a,b),(c,d)...)
user_id.append(id)
user_email.append(email)
当我查看结果时,我发现user_id
== user_email
当我单独分配时,我可以正确获取ID和电子邮件,而不是包含id和电子邮件的两个相同列表
我只是想知道双重分配背后的逻辑是什么以及导致这种现象发生的原因。
答案 0 :(得分:2)
设置
时user_id = user_email = []
您将user_id和user_email链接到一个列表。当列表改变时,两个变量都会改变。
分别设置这些变量。
User_id = []
User_email = []
如果来自C语言,这可能会让人感到困惑。将python中的变量视为名称而不是变量。
答案 1 :(得分:1)
以下是对正在发生的事情的解释:
>>> a = b = []
>>> c = []
>>> id(a)
41002688
>>> id(b)
41002688
>>> id(c)
41023328
请注意,a
和b
都有相同的ID,但c
有不同的ID - 因为a
和b
指向同样的清单。