পাইথন ২.6 বা আরও নতুন:
StopIteration
যদি কোনও উত্সাহী উপাদান না পাওয়া যায় তবে আপনি যদি উত্থাপন করতে চান :
next(x for x in the_iterable if x > 3)
আপনি যদি default_value
(উদাহরণস্বরূপ None
) পরিবর্তে ফিরে আসতে চান :
next((x for x in the_iterable if x > 3), default_value)
নোট করুন যে এক্ষেত্রে জেনারেটর এক্সপ্রেশনটির চারপাশে আপনার অতিরিক্ত জোড়া বন্ধনী প্রয়োজন - যখনই জেনারেটর এক্সপ্রেশনটি একমাত্র যুক্তি না হয় সেগুলি প্রয়োজন।
আমি বেশিরভাগ উত্তরগুলি next
বিল্ট- ইনটিকে দৃ ignore়ভাবে উপেক্ষা করে দেখছি এবং তাই আমি ধরে নিয়েছি যে কোনও রহস্যজনক কারণে তারা পাইথন-সংস্করণ সমস্যার উল্লেখ না করেই 2.5% এবং তার চেয়ে বেশি বয়স্ক সংস্করণগুলিতে 100% দৃষ্টি নিবদ্ধ রেখেছেন (তবে তারপরে আমি সেই উল্লেখটি দেখতে পাচ্ছি না) উত্তরগুলি কি উল্লেখ next
বিল্ট-ইন, যার কারণে আমি ভেবেছিলাম এটা প্রয়োজনীয় একটি উত্তর নিজেকে প্রদান - অন্তত "সঠিক সংস্করণ" ইস্যু রেকর্ডে এই ভাবে ;-) পায়।
2.5 এ, পুনরাবৃত্তকারীগুলির তাত্ক্ষণিকভাবে শেষ হয়ে গেলে .next()
পুনরুদ্ধারকারীগুলির পদ্ধতিটি তত্ক্ষণাত উত্থাপিত হয় StopIteration
- অর্থাত্ আপনার ব্যবহারের ক্ষেত্রে, যদি পুনরাবৃত্তিযোগ্য কোনও জিনিস শর্তটিকে সন্তুষ্ট না করে। যদি আপনার পাত্তা না থাকে (যেমন, আপনি জানেন যে কমপক্ষে একটি সন্তোষজনক আইটেম থাকতে হবে) তবে কেবল ব্যবহার করুন .next()
(জিনপ এক্সে সেরা, next
পাইথন ২.6-এ অন্তর্নির্মিতের জন্য লাইন এবং আরও ভাল)।
আপনি যদি না একটি ফাংশন মধ্যে যত্ন, মোড়ানো কিছু যেমন প্রথমে আপনি আপনার প্রশ্ন নির্দেশিত ছিল সেরা মনে হয়, এবং ফাংশন বাস্তবায়ন আপনি প্রস্তাবিত শুধু জরিমানা থাকাকালীন, আপনি অন্যথায় ব্যবহার করতে পারে itertools
, একটি for...: break
লুপ, অথবা একটি genexp, অথবা একটি try/except StopIteration
ফাংশনের শরীরের হিসাবে , বিভিন্ন উত্তর হিসাবে পরামর্শ। এই বিকল্পগুলির কোনওর মধ্যে খুব বেশি সংযোজনিত মূল্য নেই তাই আমি প্রথমে প্রস্তাবিত একেবারে সহজ সংস্করণটির জন্য যেতে পারি।