2008-10-09 2 views
91

में सरणी तत्वों की गणना करना मैं सरणी में तत्वों की संख्या को कैसे गिन सकता हूं, क्योंकि तर्क array.count (स्ट्रिंग) के विपरीत सरणी में सभी तत्वों की गणना नहीं करता है, यह केवल स्ट्रिंग की घटनाओं की संख्या की खोज करता है ।पायथन

+0

यह वास्तव में किसी सूची में तत्वों की गणना करने का डुप्लिकेट नहीं है, क्योंकि एक सरणी उच्च आयामी हो सकती है, है ना? किसी सरणी का 'len() 'सरणी में तत्वों की संख्या नहीं है जब तक कि सरणी 1 डी न हो। आप तर्क दे सकते हैं कि सूचियों की एक सूची भी उच्च आयामी है, लेकिन शीर्ष स्तर की सूची के लिए एक स्पष्ट प्राथमिकता है। इस शीर्ष स्तर की सूची के लिए, तत्वों की संख्या केवल इसकी 'लेन() 'है क्योंकि यह मूल रूप से 1 डी है। –

उत्तर

212

विधि लेन() सूची में तत्वों की संख्या देता है।

सिंटेक्स:

len(myArray) 

उदाहरण के लिए:

myArray = [1, 2, 3] 
len(myArray) 

आउटपुट:

3 

+0

क्या आप कृपया अपना उत्तर समझा सकते हैं;) –

+0

यह केवल एक फ्लैट, एक आयामी सूची या सरणी के लिए काम करता है, लेकिन 'प्रिंट लेन ([[0, 0], [0, 0]])' 2 के रूप में आता है, जैसा करता है 'लेन (सरणी ([[0, 0], [0, 0]]))'। –

3

या,

myArray.__len__() 

यदि आप ओपी बनना चाहते हैं; "लेन (myArray)" टाइप करना बहुत आसान है! :)

+2

एक निश्चित युक है। – UnkwnTech

+0

@ ग्रेग लिंड, यह दौड़ की स्थिति पेश नहीं करता है। (हालांकि, यह भाग्यशाली है जैसा कि यह हो जाता है।) –

+0

दौड़ की स्थिति मेरे और दूसरे पोस्टर के बीच थी! नीचे * मेरे और भी नीचे उल्लिखित उत्तर * ध्यान दें! –

24

len एक अंतर्निहित फ़ंक्शन है जो ऑब्जेक्ट में तत्वों की संख्या प्राप्त करने के लिए दिए गए कंटेनर ऑब्जेक्ट के __len__ सदस्य फ़ंक्शन को कॉल करता है।

डबल अंडरस्कोर के साथ लगाए गए फ़ंक्शंस आमतौर पर पाइथन (कंटेनर, संख्या इत्यादि) में मानक इंटरफेस को कार्यान्वित करने के लिए "विशेष विधियां" होते हैं। विशेष तरीकों का उपयोग सिंटेक्टिक चीनी (ऑब्जेक्ट सृजन, कंटेनर इंडेक्सिंग और स्लाइसिंग, विशेषता पहुंच, अंतर्निर्मित फ़ंक्शंस इत्यादि) के माध्यम से किया जाता है।

obj.__len__() का उपयोग करके विशेष विधि का उपयोग करने का सही तरीका नहीं होगा, लेकिन मुझे नहीं पता कि दूसरों को इतना क्यों संशोधित किया गया था।

+0

विशेष रूप से जब हम दोनों ने उल्लेख किया कि यह खराब रूप है। यह समझना कि "वास्तव में" कितनी लंबाई अपने अधिकार में महत्वपूर्ण है। –

1

इससे पहले कि मैंने यह देखा, मैंने खुद को सोचा, "मुझे ऐसा करने का एक तरीका बनाना है!"

for tempVar in arrayName: tempVar+=1 

और फिर मैंने सोचा, "ऐसा करने का एक आसान तरीका होना चाहिए।" और मैं सही था।

len(arrayName)

11

आप एक बहु-आयामी सरणी, लेन है, तो() आप मूल्य आप देख रहे हैं नहीं दे सकता है। उदाहरण के लिए:

a = np.arange(10).reshape(2, 5) 
print len(a) == 2 

इस कोड को ब्लॉक सच वापस आ जाएगी, तो आप सरणी के आकार बता 2. लेकिन वहाँ वास्तविक तथ्य यह 2 डी सरणी में 10 तत्व हैं है। बहुआयामी सरणियों के मामले में, लेन() आप मनमाने आकार की एक बहु-आयामी सरणी में तत्वों की संख्या प्राप्त करने के लिए

len(a) == np.shape(a)[0] 

यानी पहले सरणी के आयाम की लम्बाई है:

size = 1 
for dim in np.shape(a): size *= dim 
+0

यह वास्तव में उपयोगी लगता है, लेकिन एनपी क्या शुरू किया जाना है? यदि मैं इसे एक खाली सूची के रूप में प्रारंभ करता हूं, तो पायथन कहता है कि 'सूची' ऑब्जेक्ट में कोई विशेषता नहीं है 'arrange'' – russellmania

+1

@Russellmania 'np' के रूप में आयात numpy – dexteritas