Загрузка...

Список в одну строку

Числа уже записаны: 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%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху