NameError: নাম 'হ্রাস' পাইথনে সংজ্ঞায়িত করা হয়নি


187

আমি পাইথন ৩.২ ব্যবহার করছি। এটি চেষ্টা করে:

xor = lambda x,y: (x+y)%2
l = reduce(xor, [1,2,3,4])

এবং নিম্নলিখিত ত্রুটি পেয়েছে:

l = reduce(xor, [1,2,3,4])
NameError: name 'reduce' is not defined

reduceইন্টারেক্টিভ কনসোলে মুদ্রণের চেষ্টা করা হয়েছে - এই ত্রুটিটি পেয়েছে:

NameError: name 'reduce' is not defined


হয় reduceসত্যিই পাইথন 3.2 মধ্যে ফেলেছে? যদি তাই হয়, বিকল্প কি?


3
@ জবার্নার্ডো, সঠিক সরঞ্জামটি কী?
সের্গেই

উত্তর:


280

এটি সরানো হয়েছিল functools


49
@ জুলিও.এলেগ্রিয়া: কারণ গাইডো এটিকে ঘৃণা করে
ইগ্ন্যাশীয় Vazquez-Abrams

6
@ IgnacioVazquez- আব্রামগুলিতে উল্লিখিত নিবন্ধটি বেশিরভাগ ক্ষেত্রে কীভাবে আরও পঠনযোগ্য ফ্যাশনে লেখা যেতে পারে সে সম্পর্কে কিছু সত্যই ভাল বিষয় তুলে ধরেছে। আমার জন্য, এটা লিখে sum(item['key'] for item in list_of_dicts)
কনারবোড

195

আপনি যোগ করতে পারেন

from functools import reduce

আপনি হ্রাস ব্যবহার করার আগে।


3
পূর্ববর্তী ব্যবহারকারী ইতিমধ্যে প্রশ্নের উত্তর দিয়েছেন এবং উত্তরটি তার উত্তরের মতোই
কাঠিরাওয়ান নাটারাজন

8

অথবা আপনি যদি ছয়টি গ্রন্থাগার ব্যবহার করেন

from six.moves import reduce

3

এই ক্ষেত্রে আমি বিশ্বাস করি যে নিম্নলিখিতগুলি সমতুল্য:

l = sum([1,2,3,4]) % 2

এটির সাথে একমাত্র সমস্যাটি এটি বৃহত সংখ্যক তৈরি করে, তবে সম্ভবত এটি বারবার মডুলো অপারেশনগুলির চেয়ে ভাল?


সংখ্যাগুলি ছোট রাখতে সহায়তা করে যখন পুনরাবৃত্তি মডুলো অপারেশনগুলি দরকারী। সংখ্যক সংখ্যক সংখ্যক পরিমাণ সংখ্যক তৈরি করবে না যদি আপনি প্রচুর সংখ্যার যোগফল না যোগ করেন, সুতরাং এই ক্ষেত্রে এটি কোনও উপকারে আসবে না। বিশেষত যেহেতু এটি না করা অন্তর্নির্মিত সমষ্টি ফাংশনটি ব্যবহারের অনুমতি দেয় যা কোনও ব্যবহারকারী-সংজ্ঞায়িত ফাংশনের পুনরাবৃত্ত প্রয়োগের চেয়ে অনেক বেশি দ্রুত চলবে
হ্যাকারবস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.