Nhân hai danh sách trong python có thể là một điều cần thiết trong nhiều tính toán 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 các danh sách còn được 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
Theo cách tiếp cận này, chúng tôi thiết kế các vòng kéo, cái này bên trong cái kia. Vòng lặp bên ngoài theo dõi số 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
Thí dụ
Bản thử trực tiếp
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 để lấy từng phần tử của danh sách lồng nhau và sau đó vòng lặp for có thể được sử dụng để thực hiện phép nhân
Nếu bạn đang làm việc với Python, có nhiều tình huống mà người ta phải tìm các sản phẩm theo chỉ mục của hai danh sách. Hãy xem cách nhân danh sách trong Python bằng các cách tiếp cận khác nhauPython nhân danh sách
Để nhân một danh sách trong Python, hãy sử dụng hàm zip[]. Zip[] là một hàm Python tích hợp để tạo một trình lặp sẽ tổng hợp các phần tử từ hai hoặc nhiều lần lặp
Bạn cần chuyển các danh sách vào hàm zip[*iterables] để nhận danh sách các bộ dữ liệu ghép nối các phần tử có cùng vị trí từ cả hai danh sách
listA = [1, 2, 3] listB = [4, 5, 6] products = [] for dt1, dt2 in zip[listA, listB]: products.append[dt1 * dt2] print[products]
đầu ra
[4, 10, 18]
Trong ví dụ này, đầu tiên, chúng tôi xác định hai danh sách. Sau đó, cả hai danh sách được chuyển vào phương thức zip[] để lấy danh sách các bộ dữ liệu ghép nối các phần tử có cùng vị trí từ cả hai danh sách
Sử dụng vòng lặp for để nhân các phần tử này và nối chúng vào danh sách mới
Sử dụng khả năng hiểu danh sách để nhân danh sách
Khả năng hiểu danh sách cho phép cú pháp ngắn hơn khi bạn muốn tạo danh sách mới dựa trên các giá trị của danh sách hiện có. Nếu không hiểu danh sách, bạn sẽ phải viết một vòng lặp for có kiểm tra điều kiện bên trong, như chúng ta đã thấy trong ví dụ của phần trên
Bạn có thể sử dụng khả năng hiểu danh sách để nhân danh sách trong Python. Đầu tiên, khởi tạo giá trị của sản phẩm thành 1 [không phải 0 bằng 0 nhân với bất kỳ giá trị nào trả về 0]. Sau đó, duyệt đến cuối danh sách và nhân mỗi số với tích
Khả năng hiểu danh sách được sử dụng để thực hiện một số thao tác cho mọi phần tử hoặc chọn một tập hợp con các phần tử đáp ứng một điều kiện
Trên mỗi lần lặp, chúng tôi nhân mục danh sách hiện tại với số đã chỉ định và trả về kết quả
Ngoài ra, bạn có thể sử dụng vòng lặp for
đơn giản
Nhân từng phần tử trong danh sách với một số bằng vòng lặp for
Để nhân mỗi phần tử trong một danh sách với một số
- Khai báo một biến mới lưu danh sách rỗng
- Sử dụng vòng lặp
for
để lặp lại danh sách ban đầu - Trên mỗi lần lặp, nhân mục danh sách hiện tại với số
- Nối kết quả vào danh sách mới
my_list = [2, 4, 6]
result = []
for item in my_list:
result.append[item * 10]
print[result]
Vòng lặp for
hoạt động theo cách rất giống với cách hiểu danh sách, nhưng thay vì trực tiếp trả về các mục trong danh sách, chúng tôi nối chúng vào một danh sách mới
Bạn cũng có thể sử dụng hàm map[]
để nhân từng phần tử trong danh sách
Hàm nhận một hàm và một iterable làm đối số và gọi hàm với mỗi mục của iterable
Hàm lambda mà chúng ta đã chuyển đến map
được gọi với từng mục trong danh sách, nhân mục đó với 10
và trả về kết quả
Bước cuối cùng là sử dụng lớp list[]
để chuyển đổi đối tượng map
thành một đối tượng 10
1
Nếu bạn làm việc với mảng có nhiều mảng, bạn có thể trực tiếp sử dụng toán tử nhân trên mảng để nhân từng phần tử của nó với một số
Nhân một mảng có nhiều mảng với một số sẽ nhân hiệu quả từng phần tử trong mảng với số đã chỉ định
Lưu ý rằng điều này chỉ hoạt động với các mảng có nhiều mảng. Nếu bạn nhân danh sách python với một số, nó sẽ được lặp lại N lần
Nhân một danh sách Python với N trả về một danh sách mới chứa các phần tử của danh sách ban đầu được lặp lại N lần
Nếu bạn cần nhân tất cả các phần tử trong danh sách, hãy sử dụng hàm 10
2
Nhân tất cả các phần tử trong Danh sách bằng Python
Sử dụng phương pháp 10
2 để nhân tất cả các phần tử trong một danh sách, e. g. 10
4. Phương thức 10
2 tính tích của tất cả các phần tử trong vòng lặp được cung cấp
Đảm bảo nhập mô-đun 10
6 ở trên cùng
Chúng tôi đã sử dụng phương pháp 10
7 để nhân tất cả các phần tử trong danh sách
Phương thức tính tích của tất cả các phần tử trong iterable được cung cấp
Phương thức nhận 2 đối số sau
10
8]Nếu iterable trống, giá trị 10
9 được trả về
Ngoài ra, bạn có thể sử dụng hàm for
0
Nhân tất cả các phần tử trong Danh sách bằng cách sử dụng for
0
Để nhân tất cả các phần tử trong một danh sách
- Truyền hàm lambda và danh sách cho hàm
for
0 - Hàm lambda sẽ lấy bộ tích lũy và giá trị hiện tại và sẽ trả về phép nhân của hai
Hàm nhận 3 tham số sau
NameDescripfunctionMột hàm nhận 2 tham số - giá trị tích lũy và giá trị từ iterable. iterableMỗi phần tử trong iterable sẽ được chuyển thành đối số cho hàm. bộ khởi tạoMột giá trị bộ khởi tạo tùy chọn được đặt trước các mục của phép lặp trong phép tínhHàm lambda được gọi với giá trị tích lũy và giá trị của lần lặp hiện tại và nhân chúng
Nếu chúng tôi cung cấp một giá trị cho đối số for
3, nó sẽ được đặt trước các mục của iterable trong phép tính
Chúng tôi đã thông qua 10
cho đối số trình khởi tạo, vì vậy giá trị của for
5 sẽ là 10
trong lần lặp đầu tiên
Giá trị của for
5 sẽ được đặt thành phần tử đầu tiên trong iterable nếu chúng ta không chuyển giá trị cho for
3
Nếu for
9 trống và for
3 được cung cấp, thì for
3 được trả lại
Nếu for
3 không được cung cấp và iterable chỉ chứa mục 10
8, thì mục đầu tiên được trả lại