logo

Извадете списъци с низове в Python

В Python низът е поредица от знаци, а списъкът е колекция от елементи, които могат да бъдат от всякакъв тип данни, включително низове. Изваждане на списък с низове включва премахване на елементи, които са общи за два списъци или струни .

За да извадите един списък с низове от друг, можете да използвате 'комплект' тип данни в Python. Типът данни set е неподредена колекция от уникални елементи. Операторът за изваждане '-' може да се използва между две групи за намиране на елементите в първата група, които не присъстват във втората група.

Пример:

Ето пример за изваждане на един списък с низове от друг с помощта на зададения тип данни:

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

Изход:

в java
 ['apple', 'cherry'] 

В примера по-горе ние дефинираме два списъка, 'лист1' и 'списък2' . След това преобразуваме всеки списък в набор с помощта на 'комплект' функция в Python. След това използваме '-' оператор за изваждане на елементите 'списък2' от 'лист1' . Накрая преобразуваме получения набор обратно в списък, използвайки 'списък' функция в Python.

Това води до нов списък 'резултат' който съдържа елементите на 'лист1' които не присъстват в 'списък2' , които в случая са 'ябълка' и 'череша' .

Пример:

Ето още един пример, който показва как да извадите списък от низове от единичен низ:

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

Изход:

 'He wr!' 

В примера по-горе ние дефинираме низ 'низ1' и списък от низове 'лист1' . След това използваме разбиране на списък, за да преминем през всеки знак 'низ1' и проверете дали присъства в 'лист1' . Ако героят не е в 'лист1' , ние го добавяме към нов списък с помощта на 'присъединяване' метод. Накрая преобразуваме получения списък обратно в низ.

Това води до нов низ 'резултат' който съдържа само знаците на 'низ1' които не присъстват в 'лист1' , които в случая са 'H', 'e', ​​​​' ', 'w' , и 'р' .

Струва си да се отбележи, че редът на елементите в получения списък или низ може да не бъде запазен. Ако трябва да запазите реда, можете да използвате разбиране на списък с 'ако' израз за филтриране на елементите, които присъстват във втория списък.

камилски питон

Пример:

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

Изход:

 ['apple', 'cherry'] 

В примера по-горе ние дефинираме два списъка, 'лист1' и 'списък2' . След това използваме разбиране на списък, за да итерираме всеки елемент в него 'лист1' и проверете дали присъства в 'списък2' . Ако елементът не е в 'списък2' , добавяме го към нов списък. Накрая отпечатваме получения списък, който съдържа елементите на 'лист1' които не присъстват в 'списък2' .

подниз на низ java

Друга информация:

Типове данни за набор срещу списък:

Както бе споменато по-рано, когато се изваждат списъци с низове, се препоръчва да се преобразуват списъците в набори. Това е така, защото наборите са оптимизирани за проверка за съществуване на елементи и премахване на дубликати. Въпреки това, ако запазването на реда на елементите е важно, тогава може да е по-добре вместо това да използвате разбиране на списък.

Съображения относно производителността:

Преобразуването на списъци в набори може да бъде скъпа операция, особено за големи списъци. Ако производителността е проблем, можете да обмислите използването на алтернативни подходи като разбиране на списък или генераторен израз.

Променливост:

Важно е да се отбележи, че комплектите са променлив , докато струни и кортежи (които също могат да се използват като итерируеми типове данни) не са. Това означава, че когато извадите набор от друг набор, полученият набор е променлив и можете да променяте съдържанието му. От друга страна, когато изваждате списък или кортеж от друг списък или кортеж, полученият списък или кортеж не е променлив и не можете да променяте съдържанието му.

Вложени списъци:

Ако работите с вложени списъци, може да се наложи да използвате вложен цикъл или рекурсия, за да извадите един списък от друг. Ето един пример:

 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) 

Изход:

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

В горния пример дефинираме два вложени списъка, 'лист1' и 'списък2' . След това използваме for цикъл, за да итерираме всяка двойка подсписъци 'лист1' и 'списък2' . Използваме разбиране на списък, за да извадим елементите от всеки подсписък 'списък2' от съответния подсписък в „ лист1' . Накрая добавяме получените подсписъци към нов списък 'резултат' .