মূল কন্টেন্টে যান
মডিউল 6 · 4-এর পাঠ 4কোর্সে 24/36~12 min
মডিউল পাঠ (4/4)

অপরিহার্য itertools

পাইথন প্রচুর পুনরাবৃত্তির সরঞ্জামগুলিকে প্রকাশ করে: কিছু বিল্ট-ইন (সর্বদা উপলব্ধ), অন্যরা স্ট্যান্ডার্ডের itertools মডিউলে থাকে লাইব্রেরি এখানে সবচেয়ে গুরুত্বপূর্ণ বেশী.

enumerate: সূচক + মান

যখন লুপের সময় আপনার সূচক এবং উপাদান উভয়েরই প্রয়োজন হয়:

Python
for i, parola in enumerate(["a", "b", "c"]):
    print(i, parola)
# 0 a
# 1 b
# 2 c

# parte da un altro numero:
for i, parola in enumerate(["a", "b", "c"], start=1):
    print(i, parola)

zip: সমান্তরালভাবে পুনরাবৃত্তি করুন

উপাদান দ্বারা একাধিক পুনরাবৃত্তিমূলক উপাদান একত্রিত করে:

Python
nomi = ["Ada", "Linus", "Grace"]
eta = [36, 54, 85]

for n, e in zip(nomi, eta):
    print(f"{n} ha {e} anni")

zip সবচেয়ে ছোট পুনরাবৃত্তিযোগ্য এ থামে। একটি "দীর্ঘ" জিপ ব্যবহারের জন্য itertools.zip_longest

দুটি সমান্তরাল তালিকা থেকে একটি ডিক তৈরি করা:

Python
dict(zip(nomi, eta))
# {'Ada': 36, 'Linus': 54, 'Grace': 85}

itertools.chain: একত্রিত পুনরাবৃত্তিযোগ্য

Python
from itertools import chain
list(chain([1, 2], [3, 4], [5]))
# [1, 2, 3, 4, 5]

একটি মধ্যবর্তী তালিকা তৈরি না করে: ফাইল, জেনারেটর, ইত্যাদির জন্য দরকারী।

itertools.count এবং repeat: অসীম পুনরাবৃত্তিকারী

Python
from itertools import count, repeat

# count(start, step) — interi crescenti infiniti
for i in count(10, 2):
    if i > 20: break
    print(i)
# 10, 12, 14, 16, 18, 20

# repeat(x, n) — ripete lo stesso valore n volte (o all'infinito senza n)
list(repeat("ok", 3))   # ['ok', 'ok', 'ok']

itertools.combinations

একটি প্রদত্ত সমস্ত সমন্বয় (পুনরাবৃত্তি ছাড়া, আদেশ-স্বাধীন) দৈর্ঘ্য:

Python
from itertools import combinations
list(combinations([1, 2, 3, 4], 2))
# [(1,2), (1,3), (1,4), (2,3), (2,4), (3,4)]

অর্ডার করা ভেরিয়েন্ট: permutations। পুনরাবৃত্তি সহ বৈকল্পিক: combinations_with_replacement এবং product।

zip() অভিধান এবং ভারসাম্যহীন পুনরাবৃত্তির জন্য

zip() ফাংশনটি সংক্ষিপ্ততম ইনপুট পুনরাবৃত্তিযোগ্য শেষ হওয়ার সাথে সাথে বন্ধ হয়ে যায়। আপনি যদি উপাদানগুলিকে জোড়া দিতে চান এবং অতিরিক্ত মান রাখতে চান (এগুলিকে একটি ডিফল্ট মান দিয়ে পূরণ করুন যেমন None), আপনি itertools মডিউল থেকে zip_longest() ব্যবহার করতে পারেন। উপরন্তু, আপনি একটি zip ফলাফল সরাসরি dict() এ পাস করতে পারেন যাতে তাৎক্ষণিকভাবে একটি মূল-মান মানচিত্র তৈরি করা যায়।

চেষ্টা করে দেখুন

ব্যায়াম#python.m6.l4.e1
প্রচেষ্টা: 0লোড হচ্ছে...

সমান্তরাল তালিকা দেওয়া `দেশ = ['ইটালিয়া', 'ফ্রান্সিয়া', 'স্পাগনা']` এবং `রাজধানী = ['রোমা', 'প্যারিগি', 'মাদ্রিদ']', একটি নির্দেশিকা হিসেবে `ম্যাপিং` তৈরি করুন {দেশ: রাজধানী}। `ম্যাপিং` মূল্যায়ন করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

dict(zip(দেশ, রাজধানী))

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম পর্যালোচনা করুন

ব্যায়াম#python.m6.l4.e2
প্রচেষ্টা: 0লোড হচ্ছে...

প্রদত্ত `শব্দ = ['ciao', 'মন্ডো', 'পাইথন']`, i=1 থেকে শুরু করে টিপলের (i, শব্দ) একটি তালিকা হিসাবে `গণিত_আইটেম' তৈরি করুন। `গণিত_আইটেম` মূল্যায়ন করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

enumerate(words, start=1) → (i, value) tuples.

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

অতিরিক্ত চ্যালেঞ্জ

ব্যায়াম#python.m6.l4.e3
প্রচেষ্টা: 0লোড হচ্ছে...

Given two lists `keys = ['a', 'b', 'c']` and `values = [10, 20, 30]`, use `zip` to pair them and convert the result into a dictionary. Store the resulting dictionary in `my_dict` and evaluate it.

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

dict(zip(কী, মান)) ব্যবহার করুন এবং এটি my_dict-এ বরাদ্দ করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ