আপনি কি অন্যান্য কার্যকরী ভাষার সাথে পরিচিত? অর্থ্যাৎ আপনি কীভাবে অজগরটি কার্যকরী প্রোগ্রামিং করেন তা শেখার চেষ্টা করছেন, বা আপনি ফাংশনাল প্রোগ্রামিং এবং অজগরটিকে বাহন হিসাবে ব্যবহার করার বিষয়ে শেখার চেষ্টা করছেন?
এছাড়াও, আপনি কি তালিকার বোধগম্যতা বোঝেন?
map(f, sequence)
এর সাথে সরাসরি সমতুল্য (*):
[f(x) for x in sequence]
প্রকৃতপক্ষে, আমি মনে করি map()
একবার অযৌক্তিক হিসাবে অজগর 3.0 থেকে অপসারণের পরিকল্পনা করা হয়েছিল (এটি হয়নি)।
map(f, sequence1, sequence2)
বেশিরভাগ সমতুল্য:
[f(x1, x2) for x1, x2 in zip(sequence1, sequence2)]
(ক্রমগুলি বিভিন্ন দৈর্ঘ্যের যেখানে কেস পরিচালনা করে তার মধ্যে একটি পার্থক্য রয়েছে As যেমন আপনি দেখেছেন, map()
সিকোয়েন্সগুলির কোনওটি শেষ হয়ে গেলে কোনওটিই পূরণ করে না, যখন zip()
সংক্ষিপ্ততম ক্রম বন্ধ হয়ে যায় তখন থামে)
সুতরাং, আপনার নির্দিষ্ট প্রশ্নের সমাধানের জন্য, আপনি ফলাফলটি চেষ্টা করার চেষ্টা করছেন:
foos[0], bars
foos[1], bars
foos[2], bars
# etc.
আপনি একটি ফাংশন লিখে এটি করতে পারেন যা একক যুক্তি গ্রহণ করে এবং প্রিন্ট করে বারগুলি অনুসরণ করে:
def maptest(x):
print x, bars
map(maptest, foos)
বিকল্পভাবে, আপনি দেখতে এমন একটি তালিকা তৈরি করতে পারেন:
[bars, bars, bars, ] # etc.
এবং আপনার মূল মানচিত্রটি ব্যবহার করুন:
def maptest(x, y):
print x, y
এটি করার একটি উপায় হ'ল সুস্পষ্টভাবে তালিকাটি আগে তৈরি করা হবে:
barses = [bars] * len(foos)
map(maptest, foos, barses)
বিকল্পভাবে, আপনি itertools
মডিউলটি টানতে পারেন । itertools
অনেক চতুর ফাংশন রয়েছে যা আপনাকে পাইথনে ফাংশনাল স্টাইলে অলস-মূল্যায়ন প্রোগ্রামিং করতে সহায়তা করে। এই ক্ষেত্রে, আমরা চাই itertools.repeat
, যা এটির পুনরাবৃত্তি করার সাথে সাথে তার যুক্তি অনির্দিষ্টকালের জন্য আউটপুট করবে। এই শেষ ঘটনাটির অর্থ এই যে আপনি যদি করেন:
map(maptest, foos, itertools.repeat(bars))
আপনি অন্তহীন আউটপুট পাবেন, যেহেতু map()
ততক্ষণ আর্গুমেন্টগুলির মধ্যে একটি এখনও আউটপুট উত্পাদন করে চলে। যাইহোক, itertools.imap
ঠিক যেমন map()
, তবে সংক্ষিপ্ত পুনরাবৃত্তিযোগ্য স্টপগুলির সাথে সাথেই থেমে যায়।
itertools.imap(maptest, foos, itertools.repeat(bars))
আশাকরি এটা সাহায্য করবে :-)
(*) অজগর 3.0 এ এটি কিছুটা আলাদা। সেখানে, মানচিত্র () মূলত একটি জেনারেটর এক্সপ্রেশন প্রদান করে।