Đối với nhiều công việc phân tích dữ liệu trong Python, ta có thể cần kết hợp nhiều danh sách Python thành một danh sách. Điều này giúp xử lý nó như một danh sách đầu vào đơn lẻ cho các phần khác của chương trình cần nó. Nó mang lại lợi ích hiệu suất bằng cách giảm số lượng vòng lặp cần thiết để xử lý dữ liệu tiếp theo.
Sử dụng toán tử +
Toán tử + thực hiện việc nối các danh sách lại với nhau một cách trực tiếp. Ta chỉ áp dụng toán tử giữa tên các danh sách và kết quả cuối cùng được lưu trong danh sách lớn hơn. Thứ tự các phần tử trong các danh sách được bảo toàn.
Ví dụ
listA = ['Mon', 'Tue', 'Wed'] listB = ['2 pm', '11 am','1 pm'] listC = [1, 3, 6] # Các danh sách cho trước print("Danh sách cho trước A: " ,listA) print("Danh sách cho trước B: " ,listB) print("Danh sách cho trước C: ",listC) # sử dụng toán tử + res_list = listA + listB + listC # in kết quả print("Danh sách kết hợp là : ",res_list)Kết quả
Chạy mã trên cho kết quả sau −
Danh sách cho trước A: ['Mon', 'Tue', 'Wed'] Danh sách cho trước B: ['2 pm', '11 am', '1 pm'] Danh sách cho trước C: [1, 3, 6] Danh sách kết hợp là : ['Mon', 'Tue', 'Wed', '2 pm', '11 am', '1 pm', 1, 3, 6]
Sử dụng zip
Hàm zip kết hợp các phần tử từ mỗi danh sách từ cùng một chỉ mục và sau đó chuyển sang chỉ mục tiếp theo. Loại nối này hữu ích khi bạn muốn bảo toàn các phần tử từ các danh sách ở cùng vị trí chỉ mục cùng nhau.
Ví dụ
listA = ['Mon', 'Tue', 'Wed'] listB = ['2 pm', '11 am','1 pm'] listC = [1, 3, 6] # Các danh sách cho trước print("Danh sách cho trước A: " ,listA) print("Danh sách cho trước B: " ,listB) print("Danh sách cho trước C: ",listC) # sử dụng zip res_list = list(zip(listA,listB , listC)) # in kết quả print("Danh sách kết hợp là : ",res_list)Kết quả
Chạy mã trên cho kết quả sau −
Danh sách cho trước A: ['Mon', 'Tue', 'Wed'] Danh sách cho trước B: ['2 pm', '11 am', '1 pm'] Danh sách cho trước C: [1, 3, 6] Danh sách kết hợp là : [('Mon', '2 pm', 1), ('Tue', '11 am', 3), ('Wed', '1 pm', 6)]Sử dụng itertools.chain
Hàm chain từ module itertools có thể kết hợp các phần tử của các danh sách lại với nhau, bảo toàn trình tự mà chúng hiện diện.
Ví dụ
from itertools import chain listA = ['Mon', 'Tue', 'Wed'] listB = ['2 pm', '11 am','1 pm'] listC = [1, 3, 6] # Các danh sách cho trước print("Danh sách cho trước A: " ,listA) print("Danh sách cho trước B: " ,listB) print("Danh sách cho trước C: ",listC) # sử dụng chain res_list = list(chain(listA, listB, listC)) # in kết quả print("Danh sách kết hợp là : ",res_list) Kết quả
Chạy mã trên cho kết quả sau −
Danh sách cho trước A: ['Mon', 'Tue', 'Wed'] Danh sách cho trước B: ['2 pm', '11 am', '1 pm'] Danh sách cho trước C: [1, 3, 6] Danh sách kết hợp là : ['Mon', 'Tue', 'Wed', '2 pm', '11 am', '1 pm', 1, 3, 6]