Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cộng phần tử list với multi-list dựa trên chỉ số trong Python

List có thể lồng nhau, nghĩa là có các list nhỏ hơn làm phần tử bên trong list lớn hơn. Trong bài viết này, giải quyết thách thức cộng các phần tử của một list đơn giản vào các phần tử của list lồng nhau. Nếu độ dài list khác nhau, độ dài list nhỏ hơn trở thành độ dài tối đa của list kết quả.

Dưới đây là các phương pháp khác nhau để thực hiện.

Sử dụng vòng lặp for

Trong phương pháp này, lấy độ dài list nhỏ hơn và lặp qua các phần tử của list này, cộng vào các phần tử của list lớn hơn. Dùng hàm append để thêm từng phần tử vào list kết quả.

Ví dụ

simple_list = [25, 35, 45, 55, 65]
nested_list = [[5, 10], [10], [5, 15], [25], [5, 10, 15], [5, 6]]
result_list = []
for n in range(len(simple_list)):
    var = []
    for m in nested_list[n]:
        var.append(m + simple_list[n])
    result_list.append(var)
print("List thứ nhất :", simple_list)
print("List lồng nhau :", nested_list)
print("Kết quả :", result_list)

Kết quả

Chạy đoạn code trên cho kết quả sau:

List thứ nhất : [25, 35, 45, 55, 65]
List lồng nhau : [[5, 10], [10], [5, 15], [25], [5, 10, 15], [5, 6]]
Kết quả : [[30, 35], [45], [50, 60], [80], [70, 75, 80]]

Sử dụng enumerate()

Hàm enumerate() nhận một collection như list hoặc tuple và trả về đối tượng enumerate. Trong cách này, tạo vòng lặp for ngoài có enumerate để lấy từng phần tử của nested list, sau đó cộng vào các phần tử tương ứng trong simple list qua vòng lặp trong.

Ví dụ

simple_list = [25, 35, 45, 55, 65, 25]
nested_list = [[5, 10], [10], [5, 15], [25], [5, 10, 15]]
result_list = []
# Sử dụng enumerate
result_list = [[val + simple_list[p] for val in q] for p, q in enumerate(nested_list)]
print("List thứ nhất :", simple_list)
print("List lồng nhau :", nested_list)
print("Kết quả :", result_list)

Kết quả

Chạy đoạn code trên cho kết quả sau:

List thứ nhất : [25, 35, 45, 55, 65, 25]
List lồng nhau : [[5, 10], [10], [5, 15], [25], [5, 10, 15]]
Kết quả : [[30, 35], [45], [50, 60], [80], [70, 75, 80]]

Sử dụng zip()

Trong cách này, lặp lại chương trình trên nhưng dùng zip() thay vì enumerate. zip() nhận cả hai list làm đầu vào.

Ví dụ

simple_list = [25, 35, 45, 55, 65, 25]
nested_list = [[5, 10], [10], [5, 15], [25], [5, 10, 15]]
result_list = []
result_list = [[w + u for w in v] for u, v in zip(simple_list, nested_list)]
print("List thứ nhất :", simple_list)
print("List lồng nhau :", nested_list)
print("Kết quả :", result_list)

Kết quả

Chạy đoạn code trên cho kết quả sau:

List thứ nhất : [25, 35, 45, 55, 65, 25]
List lồng nhau : [[5, 10], [10], [5, 15], [25], [5, 10, 15]]
Kết quả : [[30, 35], [45], [50, 60], [80], [70, 75, 80]]