Список в одну строку
Числа уже записаны: 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 — одно и то же. Следующая страница — про имя остановки.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху