কম্পিউটার টিউটোরিয়াল

পাইথন: টাপল লিস্ট থেকে প্রোডাক্ট K-র চেয়ে বড় olan টাপল ফিল্টার করা

টাপল লিস্ট থেকে যেসব টাপলের সব এলিমেন্টের গুণফল (প্রোডাক্ট) নির্দিষ্ট K-র চেয়ে বড়, শুধু সেসব টাপল ফিল্টার করার জন্য কাস্টম ফাংশন এবং লিস্ট কম্প্রিহেনশন ব্যবহার করা হয়।

উদাহরণ


def tuple_product(tup):
    """টাপলের সব এলিমেন্টের গুণফল বের করে"""
    prod = 1
    for x in tup:
        prod *= x
    return prod

my_list = [(14, 25, 17), (2, 3, 5), (81, 42, 21), (6, 2, 1)]
K = 15
print("টাপল লিস্ট:", my_list)
print("K =", K)

# প্রোডাক্ট > K হলে রাখা
filtered = [t for t in my_list if tuple_product(t) > K]

print("ফিল্টার করা টাপল:", filtered)

আউটপুট


টাপল লিস্ট: [(14, 25, 17), (2, 3, 5), (81, 42, 21), (6, 2, 1)]
K = 15
ফিল্টার করা টাপল: [(14, 25, 17), (2, 3, 5), (81, 42, 21)]

প্রোডাক্ট গণনা

টাপলপ্রোডাক্ট> 15?
(14, 25, 17)5950হ্যাঁ
(2, 3, 5)30হ্যাঁ
(81, 42, 21)71442হ্যাঁ
(6, 2, 1)12না

math.prod() ব্যবহার (পাইথন ৩.৮+)


import math

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

numpy.prod() ব্যবহার (NumPy অ্যারে হলে)


import numpy as np
arr = np.array(my_list)
filtered = arr[np.prod(arr, axis=1) > K].tolist()

ফাংশনাল স্টাইল: reduce


from functools import reduce
import operator

tuple_product = lambda t: reduce(operator.mul, t, 1)
filtered = list(filter(lambda t: tuple_product(t) > K, my_list))

লগ-স্কেল কম্পারিজন (ওভারফ্লো এড়াতে)


import math

def log_product(tup):
    return sum(math.log(abs(x)) for x in tup if x != 0)

# log(K) দিয়ে কম্পার
log_K = math.log(K)
filtered = [t for t in my_list if log_product(t) > log_K]

খুব বড় সংখ্যার প্রোডাক্টের জন্য লগ-স্কেল কম্পারিজন ওভারফ্লো প্রতিরোধ করে।

  1. পাইথন - লিস্টে K-র চেয়ে বড় মানের সংখ্যা গণনা

  2. পাইথনে K-র চেয়ে বড় নম্বরগুলোর ইন্ডেক্স বের করা

  3. পাইথনে টাপলের লিস্টকে স্ট্রিংয়ের লিস্টে রূপান্তর

  4. পাইথনে টাপলের লিস্টকে লিস্টের লিস্টে রূপান্তর