python সফটওয কিভাবে পাইথন একটি তালিকায় উপাদান সংখ্যা পেতে?




পাইথন সফটওয়্যার (5)

len() ফাংশনটি Python -এ উভয় ধরনের অন্তর্নির্মিত ধরনের এবং লাইব্রেরি প্রকারের সাথে অনেকগুলি ধরণের ব্যবহার করা যেতে পারে।

>>> len([1,2,3])
3
items = []
items.append("apple")
items.append("orange")
items.append("banana")

# FAKE METHOD::
items.amount()  # Should return 3

আমি কিভাবে তালিকা তালিকার সংখ্যা পেতে পারি?


"বক্সের বাইরে" কার্যকারিতা হিসাবে এটি অনেক বেশি অর্থপূর্ণ হয়ে যাওয়ার কারণে এটি কার্যকর হতে পারে না তবে length সম্পত্তির সাথে একটি বর্গ তৈরি করতে মোটামুটি সহজ হ্যাক হবে:

class slist(list):
    @property
    def length(self):
        return len(self)

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

>>> l = slist(range(10))
>>> l.length
10
>>> print l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

মূলত, এটি একটি তালিকা বস্তুর ঠিক অনুরূপ, একটি OOP- বন্ধুত্বপূর্ণ length সম্পত্তি থাকার অতিরিক্ত সুবিধা সহ।

সর্বদা হিসাবে, আপনার মাইলেজ পরিবর্তিত হতে পারে।


এবং সম্পূর্ণতার জন্য (ডাউনভোটগুলির সাথে দলের জন্য একটি গ্রহণ করা), len() ফাংশনটি ব্যবহার না করেই এটি সম্ভব হয় (আমি এটি একটি ভাল বিকল্প হিসাবে অবহিত করব না):

def count(list):
  item_count = 0
  for item in list[:]:
    item_count = item_count + 1
  return item_count

count([1,2,3,4,5])

( list[:] কলোন list[:] অন্তর্নিহিত, অতএব ঐচ্ছিক)


পূর্বে আপনার দেওয়া উদাহরণ হিসাবে আপনার প্রশ্নের উত্তর:

items = []
items.append("apple")
items.append("orange")
items.append("banana")

print items.__len__()

docs ছাড়াও আপনি operator.length_hint ব্যবহার করতে পারেন (পাইথন 3.4+ প্রয়োজন)। স্বাভাবিক list উভয় সমান তবে length_hint একটি তালিকা-ইটারারেটরের দৈর্ঘ্য পেতে সক্ষম করে, যা নির্দিষ্ট পরিস্থিতিতে দরকারী হতে পারে:

>>> from operator import length_hint
>>> l = ["apple", "orange", "banana"]
>>> len(l)
3
>>> length_hint(l)
3

>>> list_iterator = iter(l)
>>> len(list_iterator)
TypeError: object of type 'list_iterator' has no len()
>>> length_hint(list_iterator)
3

কিন্তু length_hint শুধুমাত্র সংজ্ঞা দ্বারা একটি "ইঙ্গিত", তাই অধিকাংশ সময় len ভাল।

আমি __len__ অ্যাক্সেস করার পরামর্শ দেওয়া বেশ কয়েকটি উত্তর দেখেছি। list অন্তর্নির্মিত ক্লাসগুলির সাথে ডিল করার সময় এটি ঠিক আছে তবে এটি কাস্টম ক্লাসগুলিতে সমস্যা হতে পারে কারণ len (এবং length_hint ) কিছু নিরাপত্তা পরীক্ষা বাস্তবায়ন করে। উদাহরণস্বরূপ উভয় নেতিবাচক দৈর্ঘ্য বা দৈর্ঘ্য যা একটি নির্দিষ্ট মান অতিক্রম করে ( sys.maxsize মান) অনুমতি দেয় না। সুতরাং __len__ পদ্ধতির পরিবর্তে len ফাংশন ব্যবহার করা সবসময় নিরাপদ!





list