Способы преобразования объектов в список языка 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']
Как получить список из строки с разделителями?
Метод .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] (порядок может отличаться)
Как получить список ключей или значений словаря?
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]
Как преобразовать объект файла (строки) в список строк?
list(open('file.txt')) читает все строки в список.
with open('example.txt', 'r') as f:
lines = list(f)
print(lines)
Расширенные примеры и нюансы преобразования
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 с условиями.