Создать спискок Python
| Введение | |
| С помощью цикла for | |
| С помощью list() | |
| list comprehension: абстракция списка | |
| Из строки с помощью .split() | |
| Похожие статьи |
Введение
Эта статья является дополнением к статьи
«Списки в Python»
из неё вы можете узнать о различных способах создавать списки в Python.
генератор (абстракция) списка
выделен в отдельную статью.
С помощью []
Если нужно просто изменить тип переменной со строки на список достаточно заключить строку в квадратные скобки.
site = "testsetup.ru" print(type(site)) site = [site] print(type(site))
python str_to_list.py
<class 'str'> <class 'list'>
С помощью цикла for
Можно использовать цикл for для создания списка.
Это делается за три шага
- Создать пустой список
- Пройтись по итерируемому объекту или нескольким объектам.
- Дописать каждый элемент в конец списка
Если вы хотите создать список, содержащий первые десять полных квадратов, то вы можете выполнить эти шаги в трех строках кода:
>>> squares = [] >>> for i in range(10): ... squares.append(i * i) >>> squares
Или даже в двух
>>> squares = [] >>> for i in range(10): squares.append(i * i) >>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Сперва создаётся пустой список, squares.
Затем, с помощью цикла for происходит итерация по range(10).
Наконец, каждое число умножается само на себя и результат добавляется в конец списка.
С помощью list()
Из итерируемого объекта range()
lst = list(range(10)) print(lst)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Из строки
lst = list("testsetup.ru") print(lst)
['t', 'e', 's', 't', 's', 'e', 't', 'u', 'p', '.', 'r', 'u']
Из кортежа
lst = list((1, 2, 3)) print(lst)
[1, 2, 3]
Из множества
lst = list({1, 2, 3}) print(lst)
[1, 2, 3]
Из словаря в список попадут ключи
lst = list({"a": 1, "b": 2, "c": 3}) print(lst)
['a', 'b', 'c']
Из другого списка - тогда будет создана копия объекта.
a = [1, 2, 3] b = list(a) print(id(a) == id(b))
False
map()
Функция map() не возвращает список, она возвращат объект класса <class 'map'> но всё равно хочу упомянуть её в контексте создания списков. Хотя бы в связке с list()
map()
предоставляет альтернативный подход, основанный на функциональном программировании.
В map() передаются функция и итерируемый объект и map()
создаёт новый итерируемый объект.
o = map(function, iterable)
Этот объект содежит вывод, который мог бы получится если бы к каждому элементу изначального итерируемого объекта применили данную функцию.
В качестве первого примера снова создадим список полных квадратов
def square(x): return x * x lst = map(square, range(10)) print(*lst)
0 1 4 9 16 25 36 49 64 81
В качестве второго примера рассмотрим ситуацию, в которой вам нужно рассчитать цену после уплаты налогов для списка транзакций:
txns = [1.11, 23.45, 45.5, 61.4] TAX_RATE = .08 def get_price_with_tax(txn): return txn * (1 + TAX_RATE) final_prices = map(get_price_with_tax, txns) print(list(final_prices))
[1.1988, 25.326, 49.14, 66.312]
Здесь есть итеративный txns и функция get_price_with_tax(). Оба этих аргумента передаём в map() и сохраним результирующий объект в final_prices.
Можено легко преобразовать этот map объект в список с помощью функции list().
Абстракция списка
List Comprehension - Абстракция списков или списковое включение или генератор списков.
Третий способ создавать списки это абстракция списков.
С помощью этого элегантного похода можно переписать
цикл for из первого примера
всего в одну строку:
>>> squares = [i * i for i in range(10)] >>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Подробнее про этот способ вы можете прочитать в статье «List Comprehension в Python»
Из строки с помощью .split()
Создать список из строки можно с помощью метода split()
s = 'Please visit website' print(s) lst = s.split() print(lst)
Please visit website ['Please', 'visit', 'website']
Автор статьи: Андрей Олегович
| Встроенные коллекции | |
| Списки [] | |
| Создать список | |
| list comprehension: Генератор списков | |
| Задачи | |
| if, elif, else | |
| Циклы | |
| Генератор словарей | |
| Генератор множеств |