কোনও শর্তের তালিকার কোনও উপাদান রয়েছে কিনা তা পরীক্ষা করার পাইথোনিক উপায়


110

পাইথনে আমার একটি তালিকা রয়েছে এবং আমি কোনও উপাদান নেতিবাচক কিনা তা পরীক্ষা করতে চাই। স্পেকম্যানের has()তালিকাগুলির জন্য পদ্ধতি রয়েছে যা করে:

x: list of uint;
if (x.has(it < 0)) {
    // do something
};

কোথায় itএকটি Specman শব্দ পালাক্রমে তালিকাটির প্রতিটি উপাদানে ম্যাপ করা হয়েছে।

আমি এটি বরং মার্জিত মনে হয়। আমি পাইথন ডকুমেন্টেশন দেখেছি এবং এর মতো কিছু খুঁজে পাইনি। আমি যে সেরাটি নিয়ে আসতে পারি তা হ'ল:

if (True in [t < 0 for t in x]):
    # do something

আমি এটি বরং অবহেলিত মনে। পাইথন এ আরও ভাল উপায় আছে?

উত্তর:


186

যে কোনও () :

if any(t < 0 for t in x):
    # do something

এছাড়াও, আপনি যদি "ট্রু ইন ..." ব্যবহার করতে চলেছেন তবে এটিকে একটি জেনারেটর এক্সপ্রেশন তৈরি করুন যাতে এটি ও (এন) মেমরি নেয় না:

if True in (t < 0 for t in x):

1
সংশোধন: আপনি যদি ব্যবহার করতে চলেছেন তবে True in ...পুনরায় বিবেচনা করুন এবং anyপরিবর্তে ব্যবহার করুন।
অরণ-ফে


10

পাইথনের ঠিক এই উদ্দেশ্যে একটি বিল্ট ইন কোনও () ফাংশন রয়েছে।


কেবল 2.5+ অন্যথায় আপনাকে কোনও ফাংশন করতে হবে, সম্ভবত আইফিল্টার এবং ব্যতিক্রমগুলি ব্যবহার করতে হবে, বা বুল (সেট ((এক্স জন্য এক্স জন্য কনড))) বা এর মতো।
গ্রেগ লিন্ড

1
একটি জটিল ifilter জিনিস ছাড়া, কেবল করুন: ডিফ যে কোনও (এটি): এর মধ্যে এল জন্য: যদি এল: সত্য ফিরে; প্রত্যাবর্তন মিথ্যা
ররি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.