pionrrt 发表于 2023-6-22 14:56:52

关于A[i] = [0] * 3,能这么写是因为变量可以是列表中的一个元素么

正在看第25讲的内容,有一个例子是这样的
>>> A = * 3
>>> for i in range(3):
...   A = * 3
...
>>> A
[, , ]
>>> A = 1
>>> A
[, , ]

想问一下,关于 A = * 3 这一句,能这么写是因为变量可以是列表中的一个元素么

isdkz 发表于 2023-6-22 15:04:08

因为变量的本质是一个地址,而列表中的元素也是地址,所以列表中的元素可以被赋值

歌者文明清理员 发表于 2023-6-22 15:11:31

isdkz 发表于 2023-6-22 15:04
因为变量的本质是一个地址,而列表中的元素也是地址,所以列表中的元素可以被赋值

不,只有可变量是地址,不可变量是值

他的这个是因为 A] 也是列表,相当于二维列表

sfqxx 发表于 2023-6-22 15:13:31

是的,`A = * 3` 这句话是将列表 `A` 的第 `i` 个元素赋值为长度为 `3` 并且每个元素都为 `0` 的列表。这种写法适用于Python中所有可变的数据类型,包括列表(lists)和字典(dictionaries)等。

因为Python中的列表是一个可变的数据结构,它们可以包含任何Python对象,包括其他列表或字典。在上述例子中,`A` 列表包含了三个元素,每个元素都是一个长度为 `3` 的新列表。

因此, A 是 `A` 列表的第 `i` 个元素,也是一个列表。通过把 `A` 设置为 ` * 3`,`A` 现在指向了一个包含 `3` 个零的列表对象, 所以,当使用 `A` 进行打印时可以看到所有的元素都已经被初始化成 `0` 。

isdkz 发表于 2023-6-22 15:13:33

歌者文明清理员 发表于 2023-6-22 15:11
不,只有可变量是地址,不可变量是值

他的这个是因为 A] 也是列表,相当于二维列表

你还是搞清变量、常量和字面量的概念吧{:10_249:}
页: [1]
查看完整版本: 关于A[i] = [0] * 3,能这么写是因为变量可以是列表中的一个元素么