2016-07-02 9 views
7

इस स्थिति में सिंगल और डबल कॉलन के बीच क्या अंतर है? data[0:,4] बनाम data[0::,4]पायथन: सिंगल कोलन बनाम डबल कोलन

women_only_stats = data[0::,4] == "female" 

men_only_stats = data[0::,4] != "female" 

मैं data[0:,4] साथ data[0::,4] को बदलने के लिए प्रयास किया और मुझे कोई फर्क नहीं देखते हैं। क्या इस या किसी अन्य मामले में कोई अंतर है?

data तरह ['1' '0' '3' 'Braund, Mr. Owen Harris' 'male' '22' '1' '0' 'A/5 21171' '7.25' '' 'S']

उत्तर

5

कोई, कोई अंतर नहीं है।

डॉक्स से:: a[start:stop:step]

प्रारंभ और कदम तर्क डिफ़ॉल्ट को कोई नहीं पर

slice के लिए अजगर दस्तावेज़ देखें। स्लाइस ऑब्जेक्ट्स में केवल-पढ़ने वाले डेटा गुण प्रारंभ होते हैं, स्टॉप और चरण जो केवल तर्क मान (या उनके डिफ़ॉल्ट) को वापस करते हैं।

इस मामले में, आप एक खाली step पैरामीटर सहित हैं।

>>> a = [1,2,3,4] 
>>> a[2:] 
[3,4] 
>>> a[2::] 
[3,4] 
>>> a[2:] == a[2::] 
True 

और समझने के लिए step पैरामीटर वास्तव में करता है: यह छोड़ कर

>>> b = [1,2,3,4,5,6,7,8,9,10] 
>>> b[0::5] 
[1, 6] 
>>> b[1::5] 
[2, 7] 

तो परोक्ष None (यानी, या तो a[2:] या a[2::] द्वारा), तो आपको नहीं उत्पादन को बदलने के लिए जा रहे हैं होने के लिए किसी भी तरह से अपने कोड का।

उम्मीद है कि इससे मदद मिलती है।

0

पंक्तियों के साथ 2-आयामी सरणी वहाँ कोई अंतर नहीं है। आप एक समान slice ऑब्जेक्ट द्वारा अनुक्रमणित कर रहे हैं।

4

दोनों वाक्यविन्यास एक ही इंडेक्स में परिणाम देते हैं।

class Foo(object): 
    def __getitem__(self, idx): 
    print(idx) 

Foo()[1::,6] 
# prints (slice(1, None, None), 6) 
Foo()[1:,6] 
# prints (slice(1, None, None), 6) 

असल में, 1::,6 एक टुकड़ा (1::) और एक नंबर (6) के एक टपल है। टुकड़ा start:stop[:stride] रूप का है। घुमावदार खाली छोड़कर (1::) या यह बताते हुए नहीं (1:) बराबर है।

0

यह इस तरह है: s[start:end:step]। चरण चरण के साथ प्रारंभ से अंत तक स्लाइस एस।

0

अपने मामले डेटा में

data = ['1' '0' '3' 'Braund, Mr. Owen Harris' 'male' '22' '1' '0' 'A/5 21171' '7.25' '' 'S'] 

है तो यह वहाँ सूची में केवल एक आइटम है

data = ['103Br.............7.25S'] 

के बराबर इस sitation में है, इसलिए डेटा [0 :: 4] या डेटा [0 : 4] किसी भी चीज़ को प्रभावित नहीं करता है।

आप इस प्रयास करते हैं तो यह/अपने प्रश्न का जवाब स्पष्ट

print data[0][0::4] 
print data[0][0:4] 

ऐसा लगता है कि

data[start:end:step] 

काम करता है तो यह हमेशा की तरह बर्ताव करता है, तो अपने कदम आकार से कम डेटा लंबाई है जाएगा।

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