2014-11-05 9 views
6

बनने का कारण बनता है, मुझे लगता है कि एक साधारण समाधान है जिसे मैं देख रहा हूं। एक जटिल से बेहतर है, है ना?सूची से आइटम को हटाने से सूची को गैर-टाइप

सीधे शब्दों में कहें:

var = ['p', 's', 'c', 'x', 'd'].remove('d') 

var का कारण बनता है प्रकार None का किया जाना है। यहाँ क्या हो रहा है?

+0

आप '.remove' गलत का उपयोग कर रहे हैं? क्या आपका मतलब '.pop' है? –

+1

नहीं, पॉप को सूची में किसी निश्चित स्थान पर तत्व को निकालना है, अगर मुझे याद है। मैं एक विशिष्ट तत्व (जैसे 'डी') को हटाना चाहता हूं। –

+0

एक साइड नोट के रूप में, 'निकालें' (और 'अनुक्रमणिका' और अन्य सूची-खोज विधियों) के कई उपयोग डिज़ाइन के साथ समस्या का संकेत हैं। हो सकता है कि आपको 'सेट' का उपयोग करना चाहिए, या हो सकता है कि आपके पास इंडेक्स हो या उसके पास हो, लेकिन इसका उपयोग नहीं कर रहे हैं, आदि। यह निश्चित रूप से _always_ true नहीं है, लेकिन इसके बारे में सोचने लायक है। – abarnert

उत्तर

13

remove कुछ भी वापस नहीं करता है। यह मौजूदा सूची में जगह को संशोधित करता है। कोई असाइनमेंट की आवश्यकता नहीं है।

var = ['p', 's', 'c', 'x', 'd'] 
var.remove('d') 

अब var के साथ बदलें

var = ['p', 's', 'c', 'x', 'd'].remove('d') 

['p', 's', 'c', 'x'] के एक मूल्य होगा।

+0

हाँ, यह करता है। मैं तलवार हो सकता था मैंने कोशिश की। ओह ठीक है, जवाब के लिए धन्यवाद! 11 मिनट में उत्तर के रूप में चिह्नित किया जाएगा जब यह मुझे अनुमति देता है। –

+0

सामान्य रूप से, लगभग _any_ विधि जो पाइथन में ऑब्जेक्ट को म्यूट करता है, 'कोई नहीं', या कम से कम 'स्वयं' के अलावा कुछ और देता है। (अपवाद अधिकतर विशेष मामले हैं, जैसे '__iadd__', या ढांचे से डोमेन-विशिष्ट विधियों जिनमें उनके स्वयं के अलग-अलग मुहावरे हैं।) – abarnert

+0

असल में मेरे मामले में भी कोई भी – user32882

1

remove सूची में जगह को बदलता है, और None देता है। आपको इसे एक चर में रखना होगा, और उसके बाद इसे बदलें:

>>> var = ['p', 's', 'c', 'x', 'd'] 
>>> var.remove('d') # Notice how it doesn't return anything. 
>>> var 
['p', 's', 'c', 'x'] 
संबंधित मुद्दे