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

Python – Lọc tuple có tích các phần tử lớn hơn K

Lọc các tuple trong danh sách mà tích của tất cả phần tử lớn hơn ngưỡng K. Sử dụng hàm helper và list comprehension.

Mã nguồn


def tuples_product(index):
    my_result = 1
    for element in index:
        my_result *= element
    return my_result

my_list = [(14, 25, 17), (2, 3, 5), (81, 42, 21), (6, 2, 1)]
print("Danh sách tuple:", my_list)

K = 15
print("K =", K)

my_result = [index for index in my_list if tuples_product(index) > K]

print("Tuple có tích >", K, ":", my_result)

Kết quả

Danh sách tuple: [(14, 25, 17), (2, 3, 5), (81, 42, 21), (6, 2, 1)]
K = 15
Tuple có tích > 15 : [(14, 25, 17), (2, 3, 5), (81, 42, 21)]

Giải thích

  • Hàm tuples_product tính tích các phần tử trong tuple.
  • (14,25,17): 14×25×17 = 5950 > 15 ✓
  • (2,3,5): 2×3×5 = 30 > 15 ✓
  • (81,42,21): 81×42×21 = 71442 > 15 ✓
  • (6,2,1): 6×2×1 = 12 ≤ 15 ✗

Cách ngắn gọn (math.prod - Python 3.8+)


import math
my_result = [t for t in my_list if math.prod(t) > K]

Hoặc functools.reduce(operator.mul, t, 1) cho Python cũ hơn.