Danh sách là một tập hợp có thứ tự và có thể thay đổi. Trong Python, danh sách được viết với ngoặc vuông. Bạn truy cập các mục của danh sách bằng cách tham chiếu đến số chỉ mục. Chỉ mục âm nghĩa là bắt đầu từ cuối, -1 tham chiếu đến mục cuối cùng. Bạn có thể chỉ định một phạm vi chỉ mục bằng cách chỉ định nơi bắt đầu và nơi kết thúc phạm vi. Khi chỉ định một phạm vi, giá trị trả về sẽ là một danh sách mới với các mục được chỉ định.
Ví dụ
# sử dụng chain.from_iterable
# import chain từ itertools
from itertools import chain
ini_list = [[1, 2, 3],
[3, 6, 7],
[7, 5, 4]]
# in danh sách ban đầu
print("danh sách ban đầu ", str(ini_list))
# chuyển đổi danh sách 2D thành 1D
# sử dụng chain.from_iterable
flatten_list = list(chain.from_iterable(ini_list))
# in flatten_list
print("kết quả cuối", str(flatten_list))
# sử dụng list comprehension
# import chain từ itertools
from itertools import chain
ini_list = [[1, 2, 3],
[3, 6, 7],
[7, 5, 4]]
# in danh sách ban đầu
print("danh sách ban đầu ", str(ini_list))
# chuyển đổi danh sách 2D thành 1D
# sử dụng list comprehension
flatten_list = [j for sub in ini_list for j in sub]
# in flatten_list
print("kết quả cuối", str(flatten_list))
# sử dụng functools.reduce
# import functools
from functools import reduce
ini_list = [[1, 2, 3],
[3, 6, 7],
[7, 5, 4]]
# in danh sách ban đầu
print("danh sách ban đầu ", str(ini_list))
# chuyển đổi danh sách 2D thành 1D
# sử dụng functools.reduce
flatten_list = reduce(lambda z, y: z + y, ini_list)
# in flatten_list
print("kết quả cuối", str(flatten_list))
# sử dụng sum
ini_list = [[1, 2, 3],
[3, 6, 7],
[7, 5, 4]]
# in danh sách ban đầu
print("danh sách ban đầu ", str(ini_list))
# chuyển đổi danh sách 2D thành 1D
flatten_list = sum(ini_list, [])
# in flatten_list
print("kết quả cuối", str(flatten_list))
ini_list = [[1, 2, 3],
[3, 6, 7],
[7, 5, 4]]
# Sử dụng lambda
flatten_list = lambda y: [x for a in y for x in flatten_list(a)] if type(y) is list else [y]
print("Danh sách ban đầu ", ini_list)
# in danh sách ban đầu
print("Danh sách đã làm phẳng ", flatten_list(ini_list))
# in danh sách đã làm phẳng
Đầu ra
('danh sách ban đầu ', '[[1, 2, 3], [3, 6, 7], [7, 5, 4]]')
('kết quả cuối', '[1, 2, 3, 3, 6, 7, 7, 5, 4]')
('danh sách ban đầu ', '[[1, 2, 3], [3, 6, 7], [7, 5, 4]]')
('kết quả cuối', '[1, 2, 3, 3, 6, 7, 7, 5, 4]')
('danh sách ban đầu ', '[[1, 2, 3], [3, 6, 7], [7, 5, 4]]')
('kết quả cuối', '[1, 2, 3, 3, 6, 7, 7, 5, 4]')
('danh sách ban đầu ', '[[1, 2, 3], [3, 6, 7], [7, 5, 4]]')
('kết quả cuối', '[1, 2, 3, 3, 6, 7, 7, 5, 4]')
('Danh sách ban đầu ', [[1, 2, 3], [3, 6, 7], [7, 5, 4]])
('Danh sách đã làm phẳng ', [1, 2, 3, 3, 6, 7, 7, 5, 4])