正在加载...

一行建成列表

这些数已经写好:2,然后 5,然后 1。一行用它们建成另一组。doubled = [n * 2 for n in prices] 走过每一个数,把它变成两倍,存下 4,然后 10,然后 2。prices 不会被改写。n 只是这一行正走到的那个数的名字:先是 2,然后 5,然后 1。

4,然后 10,prices 仍有三个数

python
prices = [2, 5, 1]
doubled = [n * 2 for n in prices]

print(doubled[0])
print(doubled[1])
print(len(prices))

屏幕上是 4,然后 10,然后 3。4 是第一个新数,2 的两倍。10 是下一个,5 的两倍。3 是 prices 里还剩几个数。最后一个新数是 2,来自 1 的两倍,这个程序没有把它写出来。

prices[0] 仍是 2。变成两倍写的是新的一组。它没有换掉旧的那组。这一行走完之后,读的是 doubled。n 只在行走的时候有用。

一个条件可以把某个数留在外面。这个程序重新开始,所以 doubled 不在这里。small = [n for n in prices if n < 5] 只在一个数小于 5 时才留下它。2 进去。5 不进去。1 进去。新的一组是 2,然后 1。prices 仍有三个数。

留下的第一个数,然后留下了几个

python
prices = [2, 5, 1]
small = [n for n in prices if n < 5]

print(small[0])
print(len(small))

屏幕上是 2,然后 2。第一个 2 是 small[0],留下的那个数 2。第二个 2 是留下了几个数。5 不在 small 里。small[1] 会是 1,这个程序没有把它写出来。

📊 变成两倍、留下,或者停住

写法 得到什么
[n * 2 for n in prices] 新的一组 4、10、2,prices 不动
[n for n in prices if n < 5] 新的一组 2,然后 1,5 留在外面
prices[0] 仍是 2
n * 2 for n in prices 程序停住,因为没有方括号

方括号是这一行的一部分。没有它们,程序会停住。前面的名字和 for 后面的名字必须是同一个。 [n * 2 for price in prices] 也会停住,因为 n 根本没有拿到一个数。price 才是往下走的名字,两倍的那一段并没有用它。

下一页讲的是停住时的名字,也就是程序碰到问题时。这一页只用一行建成列表。

两组写出了什么

  1. 第一个程序写出什么?
  2. 那个程序之后,prices[0] 是什么?
  3. 第二个程序写出什么?
  4. 两倍那一行不写方括号会怎样?

新的一组,旧的那组还在

第一块屏幕是 4,然后 10,然后 3。prices[0] 仍是 2。第二块是 2,然后 2:留下的第一个数,然后留下了几个。5 留在外面。不写方括号,程序就停住。你拿去变成两倍的名字,和 for 后面的名字,是同一个。下一页讲停住时的名字。

🧠 测试您的知识

准备开始

测试您的知识

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

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

📝 说明

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