Способы преобразования объектов в список языка Python

Раздел: Работа с коллекциями -> Преобразование типов коллекций

Основные способы преобразования в список

Наиболее эффективное решение: list(iterable)

Функция list() принимает любой итерируемый объект (строку, кортеж, множество, словарь, генератор, объект map, filter, range и т.д.) и создаёт новый список, содержащий все элементы итерации. Это прямой и быстрый способ преобразования.


text = "Python"
lst = list(text)
print(lst)  # ['P', 'y', 't', 'h', 'o', 'n']

перевести в список python (преобразование в список в python)

['P', 'y', 't', 'h', 'o', 'n']
Частая ошибка: попытка преобразовать неитерируемый объект (например, число). Решение: сначала преобразовать в строку или использовать range.

Как получить список из строки с разделителями?

Метод .split() строки делит её по указанному разделителю и возвращает список подстрок.


csv_line = "один,два,три"
parts = csv_line.split(",")
print(parts)  # ['один', 'два', 'три']

Как создать список чисел из строки с разделителями и преобразовать типы?

Комбинация split() с генератором списка (list comprehension) позволяет сразу преобразовать элементы в нужный тип.


data = "1 2 3 4"
numbers = [int(x) for x in data.split()]
print(numbers)  # [1, 2, 3, 4]

Как преобразовать кортеж или множество в список?

Использование list() напрямую.


tup = (10, 20, 30)
lst_from_tuple = list(tup)   # [10, 20, 30]

st = {100, 200, 300}
lst_from_set = list(st)      # [100, 200, 300] (порядок может отличаться)
Проблема: порядок элементов в списке из множества не гарантирован. Для упорядоченного множества используйте collections.OrderedDict или Python 3.7+ dict.

Как получить список ключей или значений словаря?

list(dict.keys()) или list(dict.values()), а также преобразование самого словаря (даёт список ключей).


d = {"a": 1, "b": 2}
keys = list(d.keys())   # ['a', 'b']
values = list(d.values()) # [1, 2]
items = list(d.items())   # [('a',1), ('b',2)]

Как преобразовать объект map или filter в список?

В Python 3 map и filter возвращают итераторы. Чтобы получить список, оберните их в list().


numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers))
even = list(filter(lambda x: x % 2 == 0, numbers))
print(squared)  # [1, 4, 9, 16]
print(even)     # [2, 4]

Как преобразовать генераторное выражение в список?

Просто передать генератор в list(). Альтернатива – генератор списка.


gen = (x*2 for x in range(5))
lst_gen = list(gen)
print(lst_gen)  # [0, 2, 4, 6, 8]

Как создать список из range?

list(range(n)) создаёт список чисел от 0 до n-1.


r = list(range(10, 20, 2))
print(r)  # [10, 12, 14, 16, 18]

Как преобразовать символы строки в список, но пропустить пробелы?

Можно использовать list comprehension с условием.


s = "hello world"
chars_no_space = [c for c in s if c != ' ']
print(chars_no_space)  # ['h','e','l','l','o','w','o','r','l','d']

Как развернуть итерируемый объект в список через распаковку?

Оператор * (распаковка) в литерале списка.


a = [*"abc"]
print(a)  # ['a', 'b', 'c']

b = [*range(5)]
print(b)  # [0,1,2,3,4]
Особенность: распаковка работает только для итерируемых объектов (не для чисел). Не путайте с *args в функциях.

Как преобразовать объект файла (строки) в список строк?

list(open('file.txt')) читает все строки в список.


with open('example.txt', 'r') as f:
    lines = list(f)
print(lines)
Важно: каждая строка будет включать символ перевода строки '\n'. Для удаления используйте .strip() или rstrip().

Расширенные примеры и нюансы преобразования

1. Преобразование вложенных структур

Пример

nested = ((1, 2), (3, 4), (5, 6))
flat = [item for tup in nested for item in tup]
print(flat)  # [1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6]

2. Преобразование итератора, полученного из enumerate

Пример

text = "abcd"
enum_obj = enumerate(text)
lst_enum = list(enum_obj)
print(lst_enum)  # [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]

3. Преобразование с условием (list comprehension vs filter)

Пример

nums = [1, -2, 3, -4, 5, -6]
positive = [x for x in nums if x > 0]
print(positive)  # [1, 3, 5]
[1, 3, 5]

4. Преобразование с преобразованием типов элементов (map + list)

Пример

strings = ["1", "2", "3"]
ints = list(map(int, strings))
print(ints)  # [1, 2, 3]
[1, 2, 3]

5. Преобразование байтовой строки в список чисел

Пример

byte_data = b'\x01\x02\x03\x04'
lst_bytes = list(byte_data)
print(lst_bytes)  # [1, 2, 3, 4]
[1, 2, 3, 4]

6. Преобразование объекта zip в список

Пример

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
zipped = list(zip(names, ages))
print(zipped)  # [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
[('Alice', 25), ('Bob', 30), ('Charlie', 35)]

7. Преобразование с использованием itertools.chain (объединение итераторов)

Пример

import itertools
list1 = [1, 2]
list2 = [3, 4]
combined = list(itertools.chain(list1, list2))
print(combined)  # [1, 2, 3, 4]
[1, 2, 3, 4]

8. Преобразование словаря в список кортежей (items) и обратная распаковка

Пример

d = {"x": 10, "y": 20}
items = list(d.items())
print(items)  # [('x', 10), ('y', 20)]

new_dict = dict(items)
[('x', 10), ('y', 20)]

9. Преобразование строки с многострочным текстом в список строк (без последнего пустого)

Пример

multiline = "line1\nline2\nline3\n"
lines = multiline.splitlines()
print(lines)  # ['line1', 'line2', 'line3']
['line1', 'line2', 'line3']

10. Эффективное создание списка из большого диапазона (совет по памяти)

Пример

# Использование range + list может занять много памяти.
# Альтернатива: оставить range как итератор, если не нужен список.
# Если список необходим, лучше создать через list comprehension с условиями.

преобразование в список в Python - comments

En
перевести в список python (python)