আমি এর সাথে 2 টি জেনারেটর (সম্ভাব্য) বিভিন্ন দৈর্ঘ্যের পার্স করতে চাই zip
:
for el1, el2 in zip(gen1, gen2):
print(el1, el2)
তবে gen2
কম উপাদান থাকলে এর একটি অতিরিক্ত উপাদান gen1
হ'ল "গ্রাস" med
উদাহরণ স্বরূপ,
def my_gen(n:int):
for i in range(n):
yield i
gen1 = my_gen(10)
gen2 = my_gen(8)
list(zip(gen1, gen2)) # Last tuple is (7, 7)
print(next(gen1)) # printed value is "9" => 8 is missing
gen1 = my_gen(8)
gen2 = my_gen(10)
list(zip(gen1, gen2)) # Last tuple is (7, 7)
print(next(gen2)) # printed value is "8" => OK
স্পষ্টতই, একটি মান অনুপস্থিত ( 8
আমার পূর্ববর্তী উদাহরণে) কারণ এটি অনুধাবনের আগে আরও gen1
পড়ুন (এইভাবে মান উত্পন্ন করা হয় 8
) এর gen2
আর কোনও উপাদান নেই। তবে এই মানটি মহাবিশ্বে অদৃশ্য হয়ে যায়। কখন gen2
"দীর্ঘ" থাকে, তেমন কোনও "সমস্যা" হয় না।
প্রশ্ন : এই অনুপস্থিত মানটি পুনরুদ্ধার করার কোনও উপায় আছে (যেমন 8
আমার পূর্ববর্তী উদাহরণে)? ... আদর্শভাবে একটি পরিবর্তনশীল সংখ্যক আর্গুমেন্ট সহ (যেমন zip
করে)।
দ্রষ্টব্য : আমি বর্তমানে ব্যবহার করে অন্য উপায়ে বাস্তবায়ন itertools.zip_longest
করেছি তবে আমি কীভাবে এই অনুপস্থিত মানটি ব্যবহার zip
বা সমতুল্য পেতে পারি তা সত্যিই আমি আশ্চর্য হয়েছি ।
দ্রষ্টব্য 2 : আপনি নতুনভাবে প্রয়োগ এবং জমা দিতে চাইলে এই আরপিএলে বিভিন্ন বাস্তবায়নের কয়েকটি পরীক্ষা তৈরি করেছি :) https://repl.it/@jfthuong/MadPhysicistChester
zip()
পড়েছি , এটি চলে গেছে। 8
gen1