Найти в Дзене
Bednyakov

Три примера "List comprehensions" в Python

Оглавление

List comprehension — это упрощенная генерация списка (в одну строку) через цикл for и условия.

Пример 1

В оригинальном списке с ценами на товары произошел сбой и вместо обнуления цены уже проданного товара она была записана со знаком минус. Необходимо это недоразумение исправить.

Оригинальный список: [1.25, -9.45, 10.22, 3.78, -5.92, 1.16]

Получиться должен: [1.25, 0, 10.22, 3.78, 0, 1.16]

Вариант исправления:

С помощью этого кода мы генерируем список из элементов (X) последовательности первого списка если они больше нуля и нулей, если Х меньше нуля.

Пример 2

Необходимо сгенерировать список их нечетных чисел в заданном диапазоне. Например, в диапазоне от 1 до 10 конечный список должен содержать 1, 3, 5, 7, 9.

Решение:

-2

Список генерируется из элементов (Х) последовательности от "start" до "stop + 1" если остаток от деления Х на 2 неравен нулю.

Пример 3

В компьютерной игре столкнулись три отряда. Два из них союзники и будут бить третий. Необходимо реализовать программу, которая будет считать ущерб по третьему отряду в зависимости от урона первых двух, и выдаст список убитых и выживших. Известно, что в каждом отряде по 10 юнитов. У воинов первого отряда урон рандомный в диапазоне от 50 до 80, а во втором от 30 до 60. Соответственно, если каждый юнит третьего отряда получит по 100+ урона - он погибает.

Решение:

-3

С помощью функции randint модуля random мы наполняем первые два списка случайными десятью элементами (числами) в заданных диапазонах (от 50 до 80 и от 30 до 60), которые будут отвечать за урон каждого нападавшего. Третий список мы наполняем десятью строками "Погиб "или "Выжил", в зависимости от результата сложения двух поочередных элементов из первых списков. На выходе результат будет такого типа: ['Погиб', 'Выжил', 'Выжил', 'Погиб', 'Погиб', 'Выжил', 'Погиб', 'Погиб', 'Погиб', 'Погиб'].