这是一个有点不直观的变量行为。这是因为在Python中,变量总是引用值。在
盒子和标签
在某些语言中,我们倾向于将变量视为放置值的“框”;然而,在Python中,变量是引用,其行为更像是值的标记或“昵称”。因此,当您将1属性赋给item时,您只更改了变量引用,而不是它所指向的列表。在
图形表示可以帮助您。下图表示alist = [[1,2], [3,4], [5,6]]创建的列表
鉴于此,让我们看看在执行第一个循环时会发生什么。在
第一个循环
当您执行for item in alist时,您要求解释器从列表中获取每个值,每次一个,将其放入变量item并在其中执行一些操作。例如,在第一个操作中,我们有一个新的模式:
请注意,我们没有将子列表复制到item;相反,我们通过item指向它。然后,我们执行item = 1-但这意味着什么?这意味着我们让item指向值1,而不是指向子列表: