List là cấu trúc dữ liệu phổ biến nhất. Khi cần thêm phần tử, có 5 cách chính:
1. Toán tử + (Tạo list mới)
lst = ['Mon', 'Tue', 'Wed'] lst = lst + ['Thu', 'Fri'] print(lst) # ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
Tạo list mới, list gốc không đổi (nếu không gán lại).
2. Slicing gán (In-place)
lst = ['Mon', 'Tue', 'Wed'] lst[len(lst):] = ['Thu', 'Fri'] print(lst) # ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
Gán vào slice từ cuối list đến cuối.
3. append() - Thêm 1 phần tử (In-place)
lst = ['Mon', 'Tue', 'Wed']
lst.append('Thu')
lst.append('Fri')
lst.append(['Sat', 'Sun']) # Thêm list như 1 phần tử
print(lst) # ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', ['Sat', 'Sun']]
Lưu ý: append thêm object nguyên vẹn. Nếu thêm list → nested list.
4. extend() - Thêm nhiều phần tử từ iterable (In-place)
lst1 = ['Mon', 'Tue', 'Wed'] lst2 = ['Thu', 'Fri', 'Sat'] lst1.extend(lst2) print(lst1) # ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
Phần tử của lst2 được thêm riêng lẻ (flatten).
5. itertools.chain() - Nối nhiều iterable (Tạo iterator mới)
from itertools import chain lst1 = ['Mon', 'Tue', 'Wed'] lst2 = ['Thu', 'Fri'] lst3 = ['Sat', 'Sun'] combined = list(chain(lst1, lst2, lst3)) print(combined) # ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
Hữu ích khi nối nhiều list, hoặc làm việc với iterator lớn (lazy evaluation).
Bảng so sánh
| Phương pháp | In-place? | Thêm 1 phần tử | Thêm iterable (flatten) | Nối nhiều list |
|---|---|---|---|---|
| + | Không | ✅ | ✅ | ✅ (lồng nhau) |
| slice = | Có | ✅ | ✅ | ❌ |
| append() | Có | ✅ | ❌ (nested) | ❌ |
| extend() | Có | ❌ | ✅ | ❌ |
| chain() | Không | ❌ | ✅ | ✅ (tối ưu) |
Khuyến nghị
- Thêm 1 item:
append() - Thêm list khác (flatten):
extend() - Nối nhiều list, không sửa gốc:
list(chain(...))hoặc[*a, *b, *c](Python 3.5+)