In Python remove()
entfernt das erste Vorkommen eines Wertes in einer Liste.
So entfernen Sie todo Vorkommen eines Wertes in einer Liste?
Das ist es, was ich im Sinn habe:
>>> remove_values_from_list([1, 2, 3, 4, 2, 2, 3], 2)
[1, 3, 4, 3]
In Python remove()
entfernt das erste Vorkommen eines Wertes in einer Liste.
So entfernen Sie todo Vorkommen eines Wertes in einer Liste?
Das ist es, was ich im Sinn habe:
>>> remove_values_from_list([1, 2, 3, 4, 2, 2, 3], 2)
[1, 3, 4, 3]
Niemand hat eine optimale Lösung für die Zeit- und Raumkomplexität veröffentlicht, also dachte ich, ich versuche es mal. Hier ist eine Lösung, die alle Vorkommen eines bestimmten Wertes entfernt, ohne ein neues Array zu erstellen, und das bei effizienter Zeitkomplexität. Der Nachteil ist, dass die Elemente nicht erhalten bleiben Bestellung .
Zeitliche Komplexität: O(n)
Zusätzliche Raumkomplexität: O(1)
def main():
test_case([1, 2, 3, 4, 2, 2, 3], 2) # [1, 3, 3, 4]
test_case([3, 3, 3], 3) # []
test_case([1, 1, 1], 3) # [1, 1, 1]
def test_case(test_val, remove_val):
remove_element_in_place(test_val, remove_val)
print(test_val)
def remove_element_in_place(my_list, remove_value):
length_my_list = len(my_list)
swap_idx = length_my_list - 1
for idx in range(length_my_list - 1, -1, -1):
if my_list[idx] == remove_value:
my_list[idx], my_list[swap_idx] = my_list[swap_idx], my_list[idx]
swap_idx -= 1
for pop_idx in range(length_my_list - swap_idx - 1):
my_list.pop() # O(1) operation
if __name__ == '__main__':
main()
Viele der Antworten sind wirklich gut. Hier ist ein einfacher Ansatz, wenn Sie ein Anfänger in Python sind, falls Sie die remove()
Methode sicher.
rawlist = [8, 1, 8, 5, 8, 2, 8, 9, 8, 4]
ele_remove = 8
for el in rawlist:
if el == ele_remove:
rawlist.remove(ele_remove)
Bei zu großen Listen kann es langsamer sein.
Wenn Ihre Liste nur Duplikate von nur einem Element enthält, zum Beispiel list_a=[0,0,0,0,0,0,1,3,4,6,7]
wäre der folgende Code hilfreich:
list_a=[0,0,0,0,0,0,1,3,4,6,7]
def remove_element(element,the_list):
the_list=list(set(the_list))
the_list.remove(element)
return the_list
list_a=remove_element(element=0,the_list=list_a)
print(list_a)
o
a=list(set(i for i in list_a if i!=2))
a.remove(2)
Der Grundgedanke ist, dass die sets
lassen keine Duplikate zu, also habe ich die Liste zunächst in set( wodurch die Duplikate entfernt werden ), dann verwendet .remove()
Funktion, um die erste Instanz des Elements zu entfernen( da wir jetzt nur eine Instanz pro Artikel haben ).
Wenn Sie jedoch Duplikate von mehreren Elementen haben, helfen Ihnen die folgenden Methoden:
Verständnis der Liste
list_a=[1, 2, 3, 4, 2, 2, 3] remove_element=lambda element,the_list:[i for i in the_list if i!=element] print(remove_element(element=2,the_list=list_a))
Filter
list_a=[1, 2, 3, 4, 2, 2, 3] a=list(filter(lambda a: a != 2, list_a)) print(a)
While-Schleife
list_a=[1, 2, 3, 4, 2, 2, 3] def remove_element(element,the_list): while element in the_list:the_list.remove(element) return the_list print(remove_element(2,list_a))
for-Schleife (wie bei List comprehension)
list_a=[1, 2, 3, 4, 2, 2, 3] a=[] for i in list_a: if i!=2: a.append(i) print(a)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.