2016-04-07 12 views
40

मेरी कोड में:"www" .count ("ww") क्यों 1 और 2 नहीं देता है?

>> s = 'abacaba' 
>> s.count('aba') 
>> 2 

'ए.बी.ए.' के रूप में स्ट्रिंग s में 2 बार होता है इसके बाद के संस्करण कोड के लिए मैं सही जवाब मिल रहा है।

लेकिन निम्नलिखित मामले के लिए:

>> s = 'www' 
>> s.count('ww') 
>> 1 

इस मामले मैं उम्मीद कर रहा हूँ कि s.count('ww')2 लौट होगा। लेकिन यह 1 देता है।

क्यों?

उत्तर

165

docs पढ़ें:

वापसी स्ट्रिंग s[start:end] में (गैर-अतिव्यापी) सबस्ट्रिंग उप की घटनाओं की संख्या। प्रारंभिक मूल्यों की शुरुआत और अंत और व्याख्या के लिए डिफ़ॉल्ट स्लाइस के समान हैं।

चूंकि "ww" पहली बार मेल खाता है, यह तीसरे "डब्ल्यू" से निकलता है और "ww" से मेल खाता है।

+2

ध्यान दें कि यह उत्तर बहिष्कृत 'string.count()' फ़ंक्शन को संदर्भित करता है, समकक्ष ['str.count()' विधि] (https://docs.python.org/2/library/stdtypes नहीं)। एचटीएमएल # str.count)। –

34

string.count(s, sub[, start[, end]]):

वापसी की संख्या (गैर-अतिव्यापी) में स्ट्रिंग रों सबस्ट्रिंग उप की घटनाओं [शुरू: अंत]। प्रारंभिक मूल्यों की शुरुआत और अंत और व्याख्या के लिए डिफ़ॉल्ट स्लाइस के समान हैं।

स्रोत: https://docs.python.org/2/library/string.html

+3

ध्यान दें कि यह उत्तर बहिष्कृत 'string.count()' फ़ंक्शन को संदर्भित करता है, समकक्ष नहीं ['str.count()' विधि] (https://docs.python.org/2/library/stdtypes.html# str.count)। –

9

बस इसे पसंद सोचने की कोशिश करें:

इस शब्द में: "abacaba", कितने गैर-अतिव्यापी "ए.बी.ए." शब्दों को आप देखते हैं? मैं देखता हूं 2. और मुझे एक "सी" भी दिखाई देता है।

इस शब्द में: "www" कितने गैर-ओवरलैपिंग "ww" शब्द आप देखते हैं? मैं देखता हूं 1. और मैं भी "डब्ल्यू" देखता हूं।

एक बेहतर स्पष्टीकरण के लिए, लगता है कि जब आप देखते हैं तो आप उदाहरण को हटा रहे हैं।

"abacaba" के लिए आप "aba" देखते हैं और इसे हटाते हैं। अब "कैबा" है, आप फिर से "एबा" देखते हैं और इसे हटा देते हैं। अब आप केवल "सी" प्राप्त करते हैं। आप दो बार "aba" देखते हैं। यह "www" के लिए समान है, आप एक बार "ww" देखते हैं और इसे हटा देते हैं। अब आप केवल "डब्ल्यू" देखते हैं। आपने केवल एक बार "ww" देखा है।

यह समझ में आता है।

+39

अंतर्ज्ञान वास्तव में दस्तावेज़ों को पढ़ने के लिए एक खराब विकल्प है –

+4

यह भी गलत है; "आप कितने" ww "शब्द देखते हैं?" - मैं वास्तव में 2, और 3 "डब्ल्यू" देखता हूं। आप इसे बेहतर और अधिक सटीक बना सकते हैं। – Maroun

+0

ठीक है, मुझे समझाओ।लगता है कि जब आप देखते हैं तो आप इंस्टेंस को हटा रहे हैं। "अबाकाबा" के लिए आप "एबा" देखते हैं और इसे हटा देते हैं। अब "कैबा" है, आप फिर से "एबा" देखते हैं और इसे हटा देते हैं। अब आप केवल "सी" प्राप्त करते हैं। आप दो बार "aba" देखते हैं। यह "www" के लिए समान है, आप एक बार "ww" देखते हैं और इसे हटा देते हैं। अब आप केवल "डब्ल्यू" देखते हैं। आपने केवल एक बार "ww" देखा है। –

संबंधित मुद्दे