一行建成列表
这些数已经写好:2,然后 5,然后 1。一行用它们建成另一组。doubled = [n * 2 for n in prices] 走过每一个数,把它变成两倍,存下 4,然后 10,然后 2。prices 不会被改写。n 只是这一行正走到的那个数的名字:先是 2,然后 5,然后 1。
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 仍有三个数。
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 才是往下走的名字,两倍的那一段并没有用它。
下一页讲的是停住时的名字,也就是程序碰到问题时。这一页只用一行建成列表。
两组写出了什么
- 第一个程序写出什么?
- 那个程序之后,prices[0] 是什么?
- 第二个程序写出什么?
- 两倍那一行不写方括号会怎样?
新的一组,旧的那组还在
第一块屏幕是 4,然后 10,然后 3。prices[0] 仍是 2。第二块是 2,然后 2:留下的第一个数,然后留下了几个。5 留在外面。不写方括号,程序就停住。你拿去变成两倍的名字,和 for 后面的名字,是同一个。下一页讲停住时的名字。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部