logo

Odejmij listy ciągów w Pythonie

W Pythonie ciąg znaków to sekwencja znaków, a lista to zbiór elementów, które mogą mieć dowolny typ danych, łącznie z ciągami znaków. Odejmowanie listy ciągów polega na usunięciu elementów wspólnych dla dwóch listy Lub smyczki .

Aby odjąć jedną listę ciągów od drugiej, możesz użyć metody 'ustawić' typ danych w Pythonie. Ustawiony typ danych to nieuporządkowany zbiór unikalnych elementów. Operator odejmowania „-” można używać między dwoma zestawami, aby znaleźć elementy w pierwszym zestawie, których nie ma w drugim zestawie.

jak przekonwertować liczbę całkowitą na ciąg znaków w Javie

Przykład:

Oto przykład odejmowania jednej listy ciągów od drugiej przy użyciu ustawionego typu danych:

 list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = list(set(list1) - set(list2)) print(result) 

Wyjście:

 ['apple', 'cherry'] 

W powyższym przykładzie definiujemy dwie listy, „arkusz1” I „lista 2” . Następnie konwertujemy każdą listę na zestaw za pomocą 'ustawić' funkcja w Pythonie. Następnie używamy „-” operator odejmowania elementów „lista 2” z „arkusz1” . Na koniec konwertujemy wynikowy zestaw z powrotem na listę za pomocą metody 'lista' funkcja w Pythonie.

W rezultacie powstaje nowa lista 'wynik' który zawiera elementy „arkusz1” których nie ma w „lista 2” , które w tym przypadku są 'jabłko' I 'wiśnia' .

Przykład:

Oto kolejny przykład pokazujący, jak odjąć listę ciągów od pojedynczego ciągu:

 string1 = 'Hello world!' list1 = ['o', 'l', 'd'] result = ''.join([char for char in string1 if char not in list1]) print(result) 

Wyjście:

 'He wr!' 

W powyższym przykładzie definiujemy ciąg „ciąg1” i lista ciągów „arkusz1” . Następnie używamy rozumienia listowego do iteracji po każdym znaku „ciąg1” i sprawdź, czy jest obecny w „arkusz1” . Jeśli tej postaci nie ma „arkusz1” , dodajemy go do nowej listy za pomocą metody 'dołączyć' metoda. Na koniec konwertujemy wynikową listę z powrotem na ciąg znaków.

W rezultacie powstaje nowy ciąg 'wynik' który zawiera tylko znaki „ciąg1” których nie ma w „arkusz1” , które w tym przypadku są „H”, „e”, „”, „w” , I 'R' .

Warto zauważyć, że kolejność elementów na wynikowej liście lub ciągu znaków może nie zostać zachowana. Jeśli chcesz zachować kolejność, możesz użyć rozumienia listy z an 'Jeśli' instrukcja służąca do odfiltrowania elementów znajdujących się na drugiej liście.

Przykład:

 list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = [item for item in list1 if item not in list2] print(result) 

Wyjście:

 ['apple', 'cherry'] 

W powyższym przykładzie definiujemy dwie listy, „arkusz1” I „lista 2” . Następnie używamy rozumienia listowego do iteracji po każdym elemencie „arkusz1” i sprawdź, czy jest obecny w „lista 2” . Jeśli elementu nie ma „lista 2” , dodajemy go do nowej listy. Na koniec drukujemy wynikową listę, która zawiera elementy „arkusz1” których nie ma w „lista 2” .

strony serwera Java

Inne informacje:

Zestaw i lista typów danych:

Jak wspomniano wcześniej, podczas odejmowania list ciągów zaleca się konwersję list na zestawy. Dzieje się tak dlatego, że zbiory są zoptymalizowane pod kątem sprawdzania istnienia elementów i usuwania duplikatów. Jeśli jednak zachowanie kolejności elementów jest ważne, lepszym rozwiązaniem może być użycie rozumienia listy.

Rozważania dotyczące wydajności:

Konwertowanie list na zestawy może być operacją kosztowną obliczeniowo, szczególnie w przypadku dużych list. Jeśli problemem jest wydajność, możesz rozważyć zastosowanie alternatywnych podejść, takich jak rozumienie list lub wyrażenie generatora.

Zmienność:

Należy pamiętać, że zestawy są zmienny , podczas gdy ciągi i krotki (które mogą być również używane jako iterowalne typy danych) nie są. Oznacza to, że jeśli odejmiesz zbiór od innego zbioru, otrzymany zbiór będzie taki zmienny i możesz modyfikować jego zawartość. Z drugiej strony, podczas odejmowania listy lub krotki od innej listy lub krotki, wynikowa lista lub krotka nie jest modyfikowalna i nie można modyfikować jej zawartości.

Zagnieżdżone listy:

Jeśli pracujesz z listami zagnieżdżonymi, może być konieczne użycie zagnieżdżonej pętli lub rekurencji w celu odjęcia jednej listy od drugiej. Oto przykład:

 list1 = [['apple', 'banana'], ['cherry', 'orange']] list2 = [['banana', 'kiwi'], ['cherry', 'pear']] result = [] for sublist1, sublist2 in zip(list1, list2): subresult = [item for item in sublist1 if item not in sublist2] result.append(subresult) print(result) 

Wyjście:

 [['apple'], ['orange']] 

W powyższym przykładzie definiujemy dwie zagnieżdżone listy, „arkusz1” I „lista 2” . Następnie używamy pętli for do iteracji po każdej parze podlist „arkusz1” I „lista 2” . Używamy rozumienia list, aby odjąć elementy każdej podlisty „lista 2” z odpowiedniej podlisty w „ liść1' . Na koniec dołączamy powstałe podlisty do nowej listy 'wynik' .