আমি এর সাথে 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()পড়েছি , এটি চলে গেছে। 8gen1