Tạo danh sách các tích chéo (cross product) giữa hai danh sách: nhân mỗi phần tử list 1 với mỗi phần tử list 2. Sử dụng list comprehension lồng.
Mã nguồn
my_list_1 = [14, 35, 26]
my_list_2 = [36, 24, 12]
print("List 1:", my_list_1)
print("List 2:", my_list_2)
# Tích chéo: i * j với i từ list_2, j từ list_1
result = [i * j for j in my_list_1 for i in my_list_2]
print("Tích chéo:", result)
Kết quả
List 1: [14, 35, 26] List 2: [36, 24, 12] Tích chéo: [504, 336, 168, 1260, 840, 420, 936, 624, 312]
Giải thích
- List comprehension lồng:
for j in my_list_1 for i in my_list_2. - Thứ tự: outer loop
j(list_1), inner loopi(list_2). - Tương đương:
result = []
for j in my_list_1:
for i in my_list_2:
result.append(i * j)
- Kết quả 3×3=9 phần tử: 36×14, 24×14, 12×14, 36×35, 24×35, 12×35, 36×26, 24×26, 12×26.
Ứng dụng
Tạo ma trận nhân, tổ hợp tham số, grid search, phép Descartes product.
Thư viện itertools
import itertools
result = [i*j for i, j in itertools.product(my_list_2, my_list_1)]