python - পাইথন দিয়ে কি কি করা যায়




একটি তালিকা খালি থাকলে আমি কিভাবে পরীক্ষা করব? (20)

উদাহরণস্বরূপ, যদি নিম্নলিখিত পাস:

a = []

কিভাবে আমি খালি দেখতে দেখতে পারি?


একটি তালিকা খালি কিনা চেক করার সেরা উপায়

উদাহরণস্বরূপ, যদি নিম্নলিখিত পাস:

a = []

কিভাবে আমি খালি দেখতে দেখতে পারি?

সংক্ষিপ্ত উত্তর:

একটি বুলিয়ান প্রসঙ্গে তালিকাটি রাখুন (উদাহরণস্বরূপ, if একটি বা বিবৃতি সহ)। এটি খালি থাকলে এটি False পরীক্ষা করবে এবং অন্যথায় True । উদাহরণ স্বরূপ:

if not a:                           # do this!
    print('a is an empty list')

কর্তৃপক্ষ আপীল

পিইপি 8 , পাইথন এর স্ট্যান্ডার্ড লাইব্রেরিতে পাইথন কোডের জন্য সরকারী পাইথন স্টাইল গাইড, দাবি করে:

ক্রম জন্য, (স্ট্রিং, তালিকা, tuples), ফাঁকা ক্রম মিথ্যা যে সত্য ব্যবহার করুন।

Yes: if not seq:
     if seq:

No: if len(seq):
    if not len(seq):

আমরা আশা করি যে স্ট্যান্ডার্ড লাইব্রেরী কোডটি সম্পাদক হিসাবে এবং যতটা সম্ভব সঠিক হওয়া উচিত। কিন্তু কেন এই মামলা, এবং কেন আমরা এই নির্দেশিকা প্রয়োজন?

ব্যাখ্যা

আমি প্রায়শই পাইথন থেকে অভিজ্ঞ প্রোগ্রামারদের মত এই কোডটি দেখি:

if len(a) == 0:                     # Don't do this!
    print('a is an empty list')

এবং অলস ভাষার ব্যবহারকারীরা এই কাজ করতে প্রলুব্ধ হতে পারে:

if a == []:                         # Don't do this!
    print('a is an empty list')

এই তাদের অন্যান্য অন্যান্য ভাষায় সঠিক। এবং এই এমনকি Python মধ্যে semantically সঠিক।

কিন্তু আমরা এটি অ পাইথনিক বিবেচনা করি কারণ পাইথন বুলিয়ান জোয়ারের মাধ্যমে সরাসরি তালিকা বস্তুর ইন্টারফেসে এই সেমেন্টিকগুলিকে সমর্থন করে।

docs থেকে (এবং খালি তালিকা খালি তালিকা অন্তর্ভুক্ত করুন, [] ):

ডিফল্টরূপে, একটি বস্তুটি সত্য বলে বিবেচিত না হওয়া পর্যন্ত তার __bool__() পদ্ধতিটি সংজ্ঞায়িত করে যা False বা __len__() পদ্ধতিটি ফেরত দেয় যা বস্তুর সাথে বলা হলে শূন্য প্রদান করে। বিল্ট-ইন বস্তুর অধিকাংশই মিথ্যা বলে বিবেচিত হয়:

  • মিথ্যা হিসাবে সংজ্ঞায়িত সংহত: None এবং False
  • কোন সাংখ্যিক ধরন শূন্য: 0 , 0.0 , 0j , Decimal(0) , Fraction(0, 1)
  • ফাঁকা ক্রম এবং সংগ্রহগুলি: '' , () , [] , {} , set() , range(0)

এবং ডেটমোডেল ডকুমেন্টেশন:

object.__bool__(self)

সত্য মূল্য পরীক্ষার বাস্তবায়ন এবং বিল্ট ইন অপারেশন bool() ; False বা True ফিরে করা উচিত। এই পদ্ধতিটি সংজ্ঞায়িত না করা হলে, __len__() বলা হয়, যদি এটি সংজ্ঞায়িত করা হয়, এবং ফলাফলটি যদি সত্য হিসাবে বিবেচিত হয় তবে এটির ফলাফলটি nonzero হয়। যদি কোন ক্লাস কোনও __len__() বা __bool__() সংজ্ঞায়িত করে না __len__() তার সমস্ত ঘটনা সত্য বলে বিবেচিত হয়।

এবং

object.__len__(self)

বিল্ট ইন ফাংশন len() । বস্তুর দৈর্ঘ্যটি ফেরত দিতে হবে, একটি পূর্ণসংখ্যা> = 0. এছাড়াও, এমন বস্তু যা __bool__() পদ্ধতিটি সংজ্ঞায়িত করে না এবং যার __len__() পদ্ধতিটি শূন্য প্রদান করে সেটি বুলিয়ান প্রসঙ্গে মিথ্যা বলে মনে করা হয়।

সুতরাং পরিবর্তে এই:

if len(a) == 0:                     # Don't do this!
    print('a is an empty list')

অথবা এটা:

if a == []:                     # Don't do this!
    print('a is an empty list')

এটা কর:

if not a:
    print('a is an empty list')

Pythonic কি সাধারণত কর্মক্ষমতা বন্ধ পরিশোধ করে:

এটা বন্ধ পরিশোধ করে? (একটি সমতুল্য অপারেশন সঞ্চালনের জন্য কম সময় ভাল মনে রাখবেন :)

>>> import timeit
>>> min(timeit.repeat(lambda: len([]) == 0, repeat=100))
0.13775854044661884
>>> min(timeit.repeat(lambda: [] == [], repeat=100))
0.0984637276455409
>>> min(timeit.repeat(lambda: not [], repeat=100))
0.07878462291455435

স্কেল জন্য, এখানে ফাংশন কলিং এবং একটি খালি তালিকা তৈরি এবং ফেরত খরচ, যা আপনি উপরে ব্যবহৃত খালি চেক খরচ থেকে বিয়োগ করতে পারে:

>>> min(timeit.repeat(lambda: [], repeat=100))
0.07074015751817342

আমরা দেখেছি যে বিল্টিন ফাংশন len সাথে দৈর্ঘ্য পরীক্ষা করে 0 বা তুলনামূলক তালিকার বিপরীতে চেক করা হচ্ছে নথিবদ্ধ ভাষাটির অন্তর্নির্মিত বাক্য গঠন ব্যবহার করার চেয়ে অনেক কম কার্যকরী।

কেন?

len(a) == 0 চেক:

প্রথম পাইথন ল্যাব ছায়াচ্ছন্ন কিনা দেখতে গ্লোবাল চেক করতে হবে।

তারপরে এটি ফাংশনটি কল করুন, 0 লোড করুন এবং পাইথন সমানতা তুলনা করুন (পরিবর্তে C এর সাথে):

>>> import dis
>>> dis.dis(lambda: len([]) == 0)
  1           0 LOAD_GLOBAL              0 (len)
              2 BUILD_LIST               0
              4 CALL_FUNCTION            1
              6 LOAD_CONST               1 (0)
              8 COMPARE_OP               2 (==)
             10 RETURN_VALUE

এবং [] == [] এটি একটি অপ্রয়োজনীয় তালিকা তৈরি করতে হবে এবং তারপরে, পাইথনের ভার্চুয়াল মেশিনে তুলনামূলক অপারেশন (সি এর বিপরীতে)

>>> dis.dis(lambda: [] == [])
  1           0 BUILD_LIST               0
              2 BUILD_LIST               0
              4 COMPARE_OP               2 (==)
              6 RETURN_VALUE

"পাইথনিক" উপায়টি অনেক সহজ এবং দ্রুত চেক, কারণ তালিকাটির দৈর্ঘ্যটি বস্তুর উদাহরণ শিরোনামতে ক্যাশে করা হয়েছে:

>>> dis.dis(lambda: not [])
  1           0 BUILD_LIST               0
              2 UNARY_NOT
              4 RETURN_VALUE

সি উত্স এবং ডকুমেন্টেশন থেকে প্রমাণ

PyVarObject

এটি PyObject একটি এক্সটেনশান যা ob_size ক্ষেত্র যোগ করে। এই শুধুমাত্র কিছু দৈর্ঘ্য ধারণার বস্তু জন্য ব্যবহার করা হয়। এই ধরনের প্রায়ই পাইথন / সি এপিআই প্রদর্শিত হয় না। এটি PyObject_VAR_HEAD ম্যাক্রো সম্প্রসারণ দ্বারা নির্ধারিত ক্ষেত্রগুলির সাথে PyObject_VAR_HEAD

সি উৎস থেকে Include/listobject.h :

typedef struct {
    PyObject_VAR_HEAD
    /* Vector of pointers to list elements.  list[0] is ob_item[0], etc. */
    PyObject **ob_item;

    /* ob_item contains space for 'allocated' elements.  The number
     * currently in use is ob_size.
     * Invariants:
     *     0 <= ob_size <= allocated
     *     len(list) == ob_size

আমি এই গবেষণা উপভোগ করেছেন এবং আমি আমার উত্তর curating অনেক সময় ব্যয়। যদি আপনি মনে করেন আমি কিছু ছেড়ে যাচ্ছি, দয়া করে আমাকে একটি মন্তব্য জানাতে দিন।


কেন সব চেক?

কেউই প্রথম স্থানে তালিকাটি পরীক্ষা করার আপনার প্রয়োজন নিয়ে প্রশ্নবিদ্ধ হয়েছেন বলে মনে হচ্ছে না। কারণ আপনি কোন অতিরিক্ত প্রসঙ্গ সরবরাহ করেন নি, আমি কল্পনা করতে পারি যে আপনাকে প্রথমে এই চেকটি করতে হবে না, তবে পাইথন এ তালিকা প্রক্রিয়াকরণের সাথে অপরিচিত।

আমি তর্ক করবো যে সর্বাধিক পাইথনিক উপায়টি চেক করতে হবে না বরং কেবল প্রক্রিয়াটি প্রক্রিয়া করতে হবে। যেভাবেই এটি খালি বা পূর্ণ হোক না কেন সঠিক জিনিসটি করবে।

a = []

for item in a:
    <do something with item>

<rest of code>

এটির কোনও সামগ্রী পরিচালনা করার সুবিধা আছে, যখন খালি করার জন্য নির্দিষ্ট চেক প্রয়োজন হয় না। যদি খালি থাকে, নির্ভরশীল ব্লকটি কার্যকর হবে না এবং দোভাষী পরবর্তী লাইনে চলে যাবে।

আপনি যদি প্রকৃতপক্ষে শূন্যতা জন্য অ্যারে চেক করতে হবে, অন্যান্য উত্তর যথেষ্ট।


অনেক উত্তর দেওয়া হয়েছে, এবং তাদের অনেক প্রশংসনীয় ভাল। আমি শুধু চেক যোগ করতে চেয়েছিলেন

not a

এছাড়াও None এবং অন্যান্য ধরনের খালি কাঠামোর জন্য পাস হবে। আপনি যদি খালি তালিকার জন্য সত্যিই চেক করতে চান তবে আপনি এটি করতে পারেন:

if isinstance(a, list) and len(a)==0:
    print("Received an empty list")

আপনি এমনকি এই মত bool () ব্যবহার করার চেষ্টা করতে পারেন

    a = [1,2,3];
    print bool(a); # it will return True
    a = [];
    print bool(a); # it will return False

আমি তালিকা চেক করার জন্য এই ভাবে প্রেম খালি বা না।

খুব সহজ এবং দরকারী।


আমি নিম্নলিখিত পছন্দ:

if a == []:
   print "The list is empty."

পঠনযোগ্য এবং আপনি পরিবর্তনশীল মাধ্যমে পুনরাবৃত্তি করতে len() মত একটি ফাংশন কল সম্পর্কে চিন্তা করতে হবে না। যদিও আমি পুরোপুরি নিশ্চিত নই যে এরকম কিছু একটা বিগো নোটেশন ... তবে পাইথনের এত জ্বলজ্বলেই দ্রুত আমি সন্দেহ করি যে এটি বিশাল না হওয়া পর্যন্ত ব্যাপার না।


আমি পছন্দসই হিসাবে নীচের দেখা হয়েছে:

if not a:
    print("The list is empty or null")

আমি লিখেছিলাম:

if isinstance(a, (list, some, other, types, i, accept)) and not a:
    do_stuff

যা ভোট -1 ছিল। আমি নিশ্চিত নই যে, কারণ পাঠকরা কৌশলটির প্রতি বিরোধিতা করেছিলেন বা ভাবেন যে উত্তর উপস্থাপিত হিসাবে সহায়ক নয়। আমি এটা পরের ছিল জাহির করা হবে, যেহেতু --- যা "পাইথনিক" হিসাবে গণনা --- এই সঠিক কৌশল। আপনি যদি ইতিমধ্যেই বাতিল না করে থাকেন, অথবা যেখানে a ক্ষেত্রে হ্যান্ডেল করতে প্রস্তুত, উদাহরণস্বরূপ, False , আপনাকে if not a: পরীক্ষার প্রয়োজন হয় if not a: চেয়ে বেশি বিধিনিষেধ দরকার if not a: আপনি এই মত কিছু ব্যবহার করতে পারে:

if isinstance(a, numpy.ndarray) and not a.size:
    do_stuff
elif isinstance(a, collections.Sized) and not a:
    do_stuff

প্রথম পরীক্ষা @ মাইক এর উত্তরের জবাবের উপরে। তৃতীয় লাইন এছাড়াও প্রতিস্থাপিত হতে পারে:

elif isinstance(a, (list, tuple)) and not a:

যদি আপনি শুধুমাত্র বিশেষ ধরনের (এবং তাদের উপপাদ্য) উদাহরণস্বরূপ গ্রহণ করতে চান, অথবা এর সাথে:

elif isinstance(a, (list, tuple)) and not len(a):

আপনি স্পষ্ট প্রকারের চেক ছাড়াই দূরে যেতে পারেন, তবে পার্শ্ববর্তী প্রসঙ্গটি ইতিমধ্যেই আপনাকে আশ্বস্ত করে যে a এমন একটি মান যা আপনি হ্যান্ডেল করার জন্য প্রস্তুত, অথবা যদি আপনি নিশ্চিত হন যে আপনি যে ধরনের হ্যান্ডেল করতে প্রস্তুত না হন ত্রুটিগুলি বাড়াতে যাচ্ছে (উদাহরণস্বরূপ, একটি TypeError যদি আপনি একটি TypeError len কল করেন যার জন্য এটি অনির্দিষ্ট হয়েছে) যেটি আপনি পরিচালনা করতে প্রস্তুত। সাধারণত, "পাইথনিক" সম্মেলন এই শেষ উপায় যেতে বলে মনে হচ্ছে। এটি একটি হাঁসের মত ঝাঁকুনি করে এবং এটি একটি ডুকররার বাড়াতে দেয় যদি এটি কোকাকোলা কিভাবে না জানে। যদিও আপনি যে ধরনের অনুমানগুলি তৈরি করছেন সে সম্পর্কে এখনও আপনাকে ভাবতে হবে , এবং আপনি যে ক্ষেত্রে সঠিকভাবে পরিচালনা করার জন্য প্রস্তুত না হন সেগুলি সঠিক জায়গায় ভুল করতে যাচ্ছে কিনা। Numpy অ্যারে একটি ভাল উদাহরণ যেখানে শুধু অন্ধকার বা বুলিয়ান টাইপস্টাস্টের উপর নির্ভর করে অন্ধকারভাবে আপনি যা আশা করছেন তা সঠিকভাবে করতে পারে না।


আরেকটি সহজ উপায় হতে পারে

a = []
if len(a) == 0:
  print("Empty")
else:
  print(" Not empty")

একটি তালিকা খালি থাকলে আপনি এখানে কয়েকটি উপায় পরীক্ষা করতে পারেন:

a = [] #the list

1) সুন্দর সহজ Pythonic উপায়:

if not a:
    print("a is empty")

পাইথনে, তালিকা, টুপল, সেট, ডিক্ট, ভেরিয়েবল ইত্যাদি খালি পাত্রে False হিসাবে দেখা হয়। কেউ কেবল একটি পূর্বশর্ত হিসাবে তালিকাভুক্ত করতে পারে ( একটি বুলিয়ান মান ফেরত )। এবং একটি True মান নির্দেশ করে যে এটি অ-খালি।

2) একটি খুব স্পষ্ট উপায়: দৈর্ঘ্যটি খুঁজে পেতে len() ব্যবহার করে এবং 0 সমান কিনা তা পরীক্ষা করে দেখুন:

if len(a) == 0:
    print("a is empty")

3) অথবা এটি একটি বেনামী খালি তালিকা থেকে তুলনা করুন:

if a == []:
    print("a is empty")

4) অন্য আরেকটি নির্বোধ উপায় exception এবং iter() ব্যবহার করা হচ্ছে:

try:
    next(iter(a))
    # list has elements
except StopIteration:
    print("Error: a is empty")

এটি করতে পাইথনিক পদ্ধতিটি পিইপি 8 স্টাইল গাইড (যেখানে হ্যাঁ মানে "প্রস্তাবিত" এবং কোন মানে "সুপারিশ করা হয় না") থেকে:

ক্রম জন্য, (স্ট্রিং, তালিকা, tuples), ফাঁকা ক্রম মিথ্যা যে সত্য ব্যবহার করুন।

Yes: if not seq:
     if seq:

No:  if len(seq):
     if not len(seq):

সত্য মূল্য পরীক্ষার উপর documentation থেকে:

এখানে তালিকাভুক্ত করা ছাড়া অন্য সব মান True বলে মনে করা হয়

  • None
  • False
  • কোন সাংখ্যিক ধরন শূন্য, উদাহরণস্বরূপ, 0 , 0.0 , 0j
  • কোন খালি ক্রম, উদাহরণস্বরূপ, '' , () , []
  • কোন খালি ম্যাপিং, উদাহরণস্বরূপ, {}
  • ক্লাসটি __bool__() বা __len__() পদ্ধতি সংজ্ঞায়িত করে, ব্যবহারকারী-সংজ্ঞায়িত ক্লাসের __len__() , যখন সেই পদ্ধতিটি পূর্ণসংখ্যা শূন্য বা __bool__() মান __bool__() ফেরত দেয়।

যেমন দেখা যায়, খালি তালিকা [] মিথ্যাবাদী , তাই বুলিয়ান মানের সাথে যা করা হবে তা করা সবচেয়ে কার্যকর শব্দ:

if not a:
    print('"a" is empty!')

সহজ উপায় দৈর্ঘ্য চেক সমান শূন্য হয়।

if len(a) == 0:
    print("a is empty")

অন্য লোকেরা শুধু তালিকাগুলির বাইরে প্রশ্নটিকে সাধারণীকরণ করতে বলে মনে হচ্ছে, তাই আমি ভাবলাম যে আমি বিভিন্ন ধরনের ক্রম জন্য একটি ক্যাভিট যুক্ত করব যা অনেক লোক ব্যবহার করতে পারে, বিশেষত এটি "পাইথন পরীক্ষা খালি অ্যারের" জন্য প্রথম গুগল হিট। ।

অন্যান্য পদ্ধতি numpy অ্যারে জন্য কাজ করে না

আপনি numpy অ্যারেগুলির সাথে সতর্কতা অবলম্বন করতে হবে, কারণ list অন্যান্য বা অন্যান্য স্ট্যান্ডার্ড কন্টেইনারগুলির জন্য জরিমানা করার অন্যান্য পদ্ধতি ন্প্পি অ্যারেগুলির জন্য ব্যর্থ। আমি নিচে কেন ব্যাখ্যা, কিন্তু সংক্ষেপে, পছন্দসই পদ্ধতি size ব্যবহার করা হয়।

"পাইথনিক" উপায় কাজ করে না: অংশ 1

"পাইথনিক" উপায় numpy অ্যারেগুলির সাথে ব্যর্থ হয় কারণ numpy অ্যারেটিকে বুলগুলির একটি অ্যারে নিক্ষেপ করার চেষ্টা করে এবং if x এক্সটি সেই সমস্ত বুলেগুলির মূল্যায়ন করার চেষ্টা করে if x একসময় সমষ্টিগত সত্য মানের জন্য। কিন্তু এটি কোনও ধারণা করে না, তাই আপনি একটি ValueError :

>>> x = numpy.array([0,1])
>>> if x: print("x")
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

"পাইথনিক" উপায় কাজ করে না: পার্ট 2

কিন্তু অন্তত মামলাটি আপনাকে বলে যে এটি ব্যর্থ হয়েছে। আপনি যদি ঠিক এক উপাদান সহ একটি numpy অ্যারে if , if বিবৃতিটি "কাজ করবে", এই অর্থে যে আপনি কোনও ত্রুটি খুঁজে পান না। যাইহোক, যদি সেই উপাদানটি 0 (বা 0.0 , বা false , ...) হয়, তাহলে if বিবৃতিটি ভুলভাবে ভুলতে পারে তবে:

>>> x = numpy.array([0,])
>>> if x: print("x")
... else: print("No x")
No x

কিন্তু পরিষ্কারভাবে x বিদ্যমান এবং খালি নেই! এই ফলাফল আপনি কি চেয়েছিলেন না।

len ব্যবহার করে অপ্রত্যাশিত ফলাফল দিতে পারেন

উদাহরণ স্বরূপ,

len( numpy.zeros((1,0)) )

অ্যারে আছে শূন্য উপাদান যদিও, 1 প্রদান করে।

Numpythonic উপায়

যেমন scipy FAQ তে ব্যাখ্যা করা হয়েছে, যে সমস্ত ক্ষেত্রে আপনি জানেন যে আপনার কাছে একটি নুপি অ্যারে রয়েছে সেটি হল if x.size :

>>> x = numpy.array([0,1])
>>> if x.size: print("x")
x

>>> x = numpy.array([0,])
>>> if x.size: print("x")
... else: print("No x")
x

>>> x = numpy.zeros((1,0))
>>> if x.size: print("x")
... else: print("No x")
No x

যদি আপনি নিশ্চিত না হন যে এটি একটি list হতে পারে কিনা, একটি নুন্য অ্যারে, অথবা অন্য কিছু, আপনি এই পদ্ধতিটি একত্রিত করতে পারেন @ ডুবিয়াসজিমটি নিশ্চিত করে যে প্রতিটি পরীক্ষার জন্য সঠিক পরীক্ষাটি ব্যবহার করা হয়। খুব "পাইথনিক" নয়, তবে এটি নিখুঁতভাবে কমপক্ষে এই অর্থে পাইথনসিটি ভেঙ্গে গেছে।

ইনপুটটি খালি কিনা তা পরীক্ষা করার চেয়ে আপনাকে আরও বেশি করতে হবে এবং আপনি ইন্ডেক্সিং বা গণিত ক্রিয়াকলাপগুলির মতো অন্যান্য নুন্য বৈশিষ্ট্যগুলি ব্যবহার করছেন তবে ইনপুটটিকে একটি নুপিপূর্ণ অ্যারে হিসাবে জোরদার করার জন্য এটি আরও কার্যকর (এবং অবশ্যই আরো সাধারণ)। এটি দ্রুত করার জন্য কয়েকটি চমৎকার ফাংশন রয়েছে - সবচেয়ে গুরুত্বপূর্ণভাবে numpy.asarray । এটি আপনার ইনপুট নেয়, যদি এটি ইতিমধ্যে একটি অ্যারে না থাকে তবে এটি কোনও তালিকাতে, টিপলে, ইত্যাদিতে dtype আপনার dtype এবং বিকল্পভাবে এটি আপনার নির্বাচিত dtype রূপান্তরিত করবে। সুতরাং যখনই এটি হতে পারে তখন এটি খুব দ্রুত হয়, এবং এটি নিশ্চিত করে যে আপনি ইনপুটটি নিমজ্জিত অ্যারে অনুমান করতে পারেন। আমরা সাধারণত একই নামেরও ব্যবহার করি, কারণ একটি অ্যারে রূপান্তরটি বর্তমান scope বাইরে এটি ফিরিয়ে আনবে না:

x = numpy.asarray(x, dtype=numpy.double)

এই x.size আমি এই পৃষ্ঠায় দেখতে সব ক্ষেত্রে চেক কাজ করতে হবে।


আপনি python3 থেকে ব্যবহার করতে পারেন

 a = []
 try:
  print(a[-1])
 except IndexError:
  print("List is empty")

তালিকা খালি কিনা পরীক্ষা করতে

সম্পাদনা করুন: এটি পাইথন ২.7 এর সাথেও কাজ করে।

আমি এত জটিল উত্তর আছে কেন নিশ্চিত নই। এটা বেশ পরিষ্কার এবং সহজবোধ্য


তালিকাটি খালি থাকলে পরীক্ষা করতে চান;

def empty_list(lst):
    if len(lst) ==0:
        return false
    else:
        return all(bool(x) for x in l)

যদি আপনি আবহাওয়া পরীক্ষা করতে চান তবে তালিকাতে থাকা সমস্ত মান খালি।

if empty_list(lst):
    # do your stuff.

তবে এই খালি তালিকা জন্য সত্য হবে।

print('not empty' if a else 'empty')

এখন আপনি ব্যবহার করতে পারেন:

a.pop() if a else None

পাইথন ইন্টারেক্টিভ টার্মিনালে নিচের কোডটি দেখুন।

 >>> a = [] >>> if a: ... print "List is not empty"; ... else: ... print "List is empty" ... List is empty >>> >>> a = [1, 4, 9] >>> if a: ... print "List is not empty"; ... else: ... print "List is empty" ... List is not empty >>> 

শুধু is_empty () ব্যবহার করুন অথবা ফাংশন তৈরি করুন: -

l = []
if l:
    # do your stuff.

এটি একটি তালিকা, tuples, অভিধান এবং আরও অনেক কিছু মত একটি তথ্য_ গঠন জন্য ব্যবহার করা যেতে পারে। এই দ্বারা, আপনি শুধু ব্যবহার করে এটি অনেক বার কল করতে পারেন is_empty(any_structure)


অ্যারের দৈর্ঘ্য শূন্য (বা না।) যদি আপনি অ্যারের দৈর্ঘ্য শূন্য কিনা তা পরীক্ষা করতে পারেন তবে এটি খালি । নিম্নলিখিত চেষ্টা করুন:

>>> a = []
>>> if a:
...     print "List is not empty";
... else:
...     print "List is empty"
... 
List is empty
>>> 
>>> a = [1, 4, 9]
>>> if a:
...     print "List is not empty";
... else:
...     print "List is empty"
... 
List is not empty
>>> 

a == []

একটু বেশি ব্যবহারিক:

def is_empty(any_structure):
    if any_structure:
        print('Structure is not empty.')
        return True
    else:
        print('Structure is empty.')
        return False  

def list_test (L):
    if   L is None  : print 'list is None'
    elif not L      : print 'list is empty'
    else: print 'list has %d elements' % len(L)

list_test(None)
list_test([])
list_test([1,2,3])

কখনও কখনও None জন্য পরীক্ষা করার জন্য এবং পৃথকীকরণের জন্য আলাদা আলাদাভাবে এটি দুটি পৃথক রাষ্ট্র হিসাবে ভাল। উপরের কোডটি নিম্নলিখিত আউটপুট তৈরি করে:

list is None 
list is empty 
list has 3 elements

যদিও এটি কিছুই মূল্যহীন যে None মিথ্যাবাদী। সুতরাং আপনি যদি না-নিঃসঙ্গতার জন্য পরীক্ষা আলাদা করতে না চান তবে আপনাকে তা করতে হবে না।

def list_test2 (L):
    if not L      : print 'list is empty'
    else: print 'list has %d elements' % len(L)

list_test2(None)
list_test2([])
list_test2([1,2,3])

প্রত্যাশিত উত্পাদন

list is empty
list is empty
list has 3 elements






is-empty