Computer >> Máy Tính >  >> Lập trình >> Python

Phép nhân tùy chỉnh trong danh sách danh sách bằng Python

Nhân hai danh sách trong python có thể là một điều cần thiết trong nhiều phép tính phân tích dữ liệu. Trong bài này, chúng ta sẽ xem cách nhân các phần tử của một danh sách hay còn gọi là danh sách lồng nhau với một danh sách khác.

Sử dụng vòng lặp

Trong cách tiếp cận này, chúng tôi thiết kế kéo cho các vòng lặp, vòng lặp này bên trong vòng lặp khác. Vòng lặp bên ngoài theo dõi số lượng phần tử trong danh sách và vòng lặp bên trong theo dõi từng phần tử bên trong danh sách lồng nhau. Chúng tôi sử dụng toán tử * để nhân các phần tử của danh sách thứ hai với các phần tử tương ứng của danh sách lồng nhau.

Ví dụ

listA = [[2, 11, 5], [3, 2, 8], [11, 9, 8]]

multipliers = [5, 11, 0]

# Original list
print("The given list: " ,listA)

# Multiplier list
print(" Multiplier list : " ,multipliers )

# using loops
res = [[] for idx in range(len(listA))]
   for i in range(len(listA)):
      for j in range(len(multipliers)):
         res[i] += [multipliers[i] * listA[i][j]]

#Result
print("Result of multiplication : ",res)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

The given list: [[2, 11, 5], [3, 2, 8], [11, 9, 8]]
Multiplier list : [5, 11, 0]
Result of multiplication : [[10, 55, 25], [33, 22, 88], [0, 0, 0]]

Với liệt kê

Phương thức liệt kê có thể được sử dụng để tìm nạp từng phần tử của danh sách lồng nhau và sau đó các vòng lặp for có thể được sử dụng để thực hiện phép nhân.

Ví dụ

listA = [[2, 11, 5], [3, 2, 8], [11, 9, 8]]

multipliers = [5, 11, 0]

# Original list
print("The given list: " + str(listA))

# Multiplier list
print(" Multiplier list : " ,multipliers )

# Using enumerate
res = [[multipliers[i] * j for j in x]
      for i, x in enumerate(listA)]

   #Result
print("Result of multiplication : ",res)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

The given list: [[2, 11, 5], [3, 2, 8], [11, 9, 8]]
Multiplier list : [5, 11, 0]
Result of multiplication : [[10, 55, 25], [33, 22, 88], [0, 0, 0]]