Giới thiệu
Để tạo list mới nơi mỗi chỉ số (index) được lặp lại số lần bằng giá trị tại chỉ số đó, ta dùng list comprehension lồng nhau với enumerate.
Ví dụ minh họa
my_list = [4, 0, 3, 1]
print("Danh sách ban đầu:")
print(my_list)
my_result = [element for sub in ([index] * element for index, element in enumerate(my_list)) for element in sub]
print("Kết quả (index lặp lại value lần):")
print(my_result)
Kết quả đầu ra
Danh sách ban đầu: [4, 0, 3, 1] Kết quả (index lặp lại value lần): [0, 0, 0, 0, 2, 2, 2, 3]
Giải thích
enumerate(my_list)cho cặp (index, value).[index] * elementtạo list chứa index lặp lại element lần.- Generator expression tạo ra các list con.
- List comprehension phẳng (flatten) các list con thành một list duy nhất.
- Giá trị 0 tại index 1 không sinh ra phần tử nào (0 lần).