正在加载...

就地修改

plate 里前面是 tea,后面跟着 water。plate[0] = "soup" 把位置 0 换成 soup,tea 就不在了。water 仍在位置 1。还是两个值。末尾没有多出一个,也没有少掉一个。

print 按它们所在的顺序写出每个值,方括号也一起写出。soup 排在最前,是因为换掉的是位置 0。len(plate) 仍然是 2。第一个程序不会把位置 1 单独写成一行。列表那一行已经写出那里是 water。

soup 换掉 tea

python
plate = ["tea", "water"]
plate[0] = "soup"

print(plate)
print(len(plate))

屏幕上先是 soup,然后是 water,然后是数字 2。位置 1 没有挪动。tea 已经不在 plate 里。

same = plate 只是给已经有的那份列表再起一个名字。不会另建一份。plate[1] = "soup" 换掉 water,位置 0 仍是 tea。名字 same 在位置 1 上也是 soup。same[1] 同样是 soup,虽然程序写的是整份列表,不是单独那个位置。

一份列表,两个名字

python
plate = ["tea", "water"]
same = plate
plate[1] = "soup"

print(plate)
print(same)

两行都是 tea,然后 soup。water 从两个名字里都消失了。一次替换,一份列表。这一页没有做出分开的副本。

plate 里只有 tea 和 water 时,plate[2] = "bread" 会让程序停住。位置 2 还不存在。换掉某个位置并不会在末尾多开一个位置。这一行不在上面的程序里。

plate = ["soup", "water"] 是另一件事。它会做出一份新列表。原来那份仍留给还指向它的名字。这一页只在你已经有的那份列表里面换值。

下一页会做出一份分开的副本,这样从一个名字改动,另一个名字上看不到。这里两个名字是同一份列表,你只换掉里面已经有的一个值。

看两块屏幕

  1. 第一个程序写出的列表是什么,后面的数字又是什么?
  2. 那个程序之后,位置 1 上是什么?
  3. 第二个程序的两个 print 各写出什么?
  4. plate 里只有 tea 和 water 时,为什么 plate[2] = "bread" 会让程序停住?

长度仍是 2

第一个程序里 soup 占了 tea 的位置,长度仍是 2,所以屏幕是 soup,然后 water,然后 2。water 仍在位置 1。第二个程序里两个名字都是 tea,然后 soup,因为 same 和 plate 是同一份列表,位置 0 仍是 tea。plate[2] = "bread" 会停住:那个位置不存在,这次替换也不会多出一个位置。

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
5
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部