चलें कहते हैं कि मैं एक सूची a
है:पायथन में किसी सूची से तत्व के सभी उदाहरण कैसे हटा सकते हैं?
a = [[1, 1], [2, 2], [1, 1], [3, 3], [1, 1]]
वहाँ एक समारोह है कि [1, 1]
के सभी उदाहरणों को हटा है?
चलें कहते हैं कि मैं एक सूची a
है:पायथन में किसी सूची से तत्व के सभी उदाहरण कैसे हटा सकते हैं?
a = [[1, 1], [2, 2], [1, 1], [3, 3], [1, 1]]
वहाँ एक समारोह है कि [1, 1]
के सभी उदाहरणों को हटा है?
एक सूची समझ का उपयोग करें:
a[:] = [x for x in a if x != [1, 1]]
आप यथा-स्थान सूची को संशोधित करना चाहते हैं, या एक समारोह के रूप:
def remove_all(element, list):
return filter(lambda x: x != element, list)
a = remove([1,1],a)
या अधिक सामान्य:
def remove_all(elements, list):
return filter(lambda x: x not in elements, list)
a = remove(([1,1],),a)
क्यों 'ए' के बजाय 'a [:]' सेट करें? – Raj
@राज: 'ए = [1]; बी = ए; ए = [2]; बी == [1] '; 'ए = [1]; बी = ए; एक [:] = [2]; बी == [2] '। – ephemient
@Raj 'a' वह बॉक्स नहीं है जिसे आपने ऑब्जेक्ट्स रखा है - यह एक नाम टैग है जिसे आप ऑब्जेक्ट्स से जोड़ते हैं। 'a = ...' नाम को किसी नए ऑब्जेक्ट से जोड़ता है, लेकिन 'a [:]' उस सूची के सभी आइटमों को प्रतिस्थापित करता है जो 'a' नई सूची की सामग्री से बंधे हैं। – wizzwizz4
new_list = filter(lambda x: x != [1,1], a)
[x for x in a if x != [1, 1]]
यह देखते हुए कि 'list.remove' पहले से क्या करता है, मैं शायद इस फ़ंक्शन को' हटाएं 'कहूंगा। – ephemient
..... ठीक है:) ..... –
def remAll(L, item):
answer = []
for i in L:
if i!=item:
answer.append(i)
return answer
सोचा कि यह दूसरों की तुलना में लंबा दिखता है, लेकिन कोड वास्तव में साफ, पठनीय और कुशल है। –
गूगल Delete all items in the list पाता है, जो इस तरह के
from functools import partial
from operator import ne
a = filter(partial(ne, [1, 1]), a)
filter([1,1].__ne__,a)
मैं 'functools.partial (operator.ne, [1,1])' पसंद करता हूं, क्योंकि (कम से कम पायथन 2.x) अन्य प्रकार (' int', उदाहरण के लिए) सभी के पास '__ne__' नहीं है। ऐसा लगता है कि पाइथन 3 में तय किया गया है, हालांकि: सभी प्रकार 'ऑब्जेक्ट' से प्राप्त होते हैं, जिनमें '__ne__' होता है। – ephemient
शुद्ध अजगर कोई मॉड्यूल संस्करण, या कोई सूची कंप्यूटर अनुप्रयोग संस्करण के रूप में जवाहरात भी शामिल है (सरल समझने के लिए?)
>>> x = [1, 1, 1, 1, 1, 1, 2, 3, 2]
>>> for item in xrange(x.count(1)):
... x.remove(1)
...
>>>
>>> x
[2, 3, 2]
को डीफ़ में आसानी से बनाया जा सकता है
def removeThis(li,this):
for item in xrange(li.count(this)):
li.remove(this)
return li
यहाँ एलेक्स मार्टेली के जवाब देने के लिए एक आसान विकल्प है:
a = [x for x in a if x != [1,1]]
यह अलग-अलग व्यवहार करता है - यह चर के मान को सेट करेगा लेकिन ऑब्जेक्ट को संशोधित नहीं करेगा। ऐसा लगता है कि यह काम करता है, लेकिन सूची को संशोधित नहीं करता है - बल्कि यह इसे बदल देता है। पुरानी सूची का उपयोग करने वाली कुछ भी अपडेट नहीं मिलेगी। – wizzwizz4
मैं लिख पता 'यहां where' आकर्षक, इग्नेसियो, एसक्यूएल के साथ तुलना करके है ... लेकिन यह काम नहीं करता! आपको इसे 'if'' करना होगा, जैसा कि मैंने अपने उत्तर में किया था। –
@Alex: Argh, हाँ, दाएं, तय। –