/ / सूची हटाने वाले तत्व पायथन - अजगर, पुनरावृत्ति, पूंछ-पुनरावृत्ति

रिकर्सन सूची तत्वों को हटाने पायथन - पायथन, रिकर्सन, पूंछ-रिकर्सन

सूची के तत्वों को हटाने के लिए एक पुनरावर्ती कार्य लिखने की आवश्यकता है, लेकिन परिणाम जैसे सरणियों को रखें।

def remove_words(listx):
for element in listx:
if isinstance(element, list):
remove_words(element)
else:
listx.remove(element)

return listx

remove_words(["a", "b", ["c"]]) लौटूंगा [[]]

मेरा कोड रिटर्न ["b",[]] किसी कारण से यह एक तत्व गायब है।

उत्तर:

जवाब के लिए 2 № 1

इसे पुनरावृत्त करते समय तत्वों को संग्रह से न निकालें बार-बार फोन किया list.remove प्रत्येक निष्कासन (एक यादृच्छिक सूचकांक से) के बाद से आदर्श प्रदर्शन-वार भी नहीं हैं O(N)। दोनों मुद्दों के आसपास एक सरल तरीका निम्नलिखित समझ होगा

def remove_words(listx):
return [remove_words(e) for e in listx if isinstance(e, list)]

प्रतीत होता है लापता आधार मामला एक सूची है जिसमें कोई नेस्टेड सूची नहीं है जहां एक खाली सूची वापस आ जाती है।

यदि आप सूची को संशोधित करना चाहते हैं, तो आप स्लाइस असाइनमेंट का उपयोग कर सकते हैं:

def remove_words(listx):
listx[:] = [remove_words(e) for e in listx if isinstance(e, list)]

जवाब के लिए 0 № 2
def remove_words(listx):
if listx == []:
return []
elif not isinstance(listx[0], list):
return remove_words(listx[1:])
else:
return [remove_words(listx[0])] + remove_words(listx[1:])

print(remove_words(["a", "b", ["c"]]))
print(remove_words(["a", ["b",["c","d"],"c"], [["f"],["g"]],"h"]))