logo

Віднімання списків рядків у Python

У Python рядок — це послідовність символів, а список — це набір елементів, які можуть бути будь-якого типу даних, включаючи рядки. Віднімання списку рядків передбачає видалення елементів, спільних для двох списки або рядки .

Щоб відняти один список рядків з іншого, ви можете використовувати 'набір' тип даних у Python. Тип даних set — це невпорядкована колекція унікальних елементів. Оператор віднімання '-' можна використовувати між двома наборами, щоб знайти елементи в першому наборі, яких немає в другому наборі.

приклад:

Ось приклад віднімання одного списку рядків з іншого за допомогою типу даних set:

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

Вихід:

як перетворити ціле число на рядок у java
 ['apple', 'cherry'] 

У прикладі вище ми визначаємо два списки, 'sheet1' і 'list2' . Після цього ми перетворюємо кожен список у набір за допомогою 'набір' функція в Python. Після цього використовуємо '-' оператор для віднімання елементів 'list2' від 'sheet1' . Нарешті, ми перетворюємо отриманий набір назад у список за допомогою 'список' функція в Python.

У результаті буде створено новий список 'результат' що містить елементи 'sheet1' яких немає в 'list2' , які в даному випадку є 'яблуко' і 'вишня' .

приклад:

Ось ще один приклад, який показує, як відняти список рядків з одного рядка:

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

Вихід:

 'He wr!' 

У наведеному вище прикладі ми визначаємо рядок 'рядок1' і список рядків 'sheet1' . Після цього ми використовуємо розуміння списку для повторення кожного символу 'рядок1' і перевірте, чи він присутній у 'sheet1' . Якщо персонажа немає в 'sheet1' , ми додаємо його до нового списку за допомогою 'приєднатися' метод. Нарешті, ми перетворюємо отриманий список назад у рядок.

Це призводить до створення нового рядка 'результат' який містить лише символи 'рядок1' яких немає в 'sheet1' , які в даному випадку є 'H', 'e', ​​​​' ', 'w' , і 'r' .

Варто зазначити, що порядок елементів у результуючому списку або рядку може не зберігатися. Якщо вам потрібно зберегти порядок, ви можете використовувати розуміння списку за допомогою 'якщо' для фільтрації елементів, присутніх у другому списку.

сторінки сервера java

приклад:

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

Вихід:

 ['apple', 'cherry'] 

У прикладі вище ми визначаємо два списки, 'sheet1' і 'list2' . Після цього ми використовуємо розуміння списку для повторення кожного елемента 'sheet1' і перевірте, чи він присутній у 'list2' . Якщо елемента немає в 'list2' , ми додаємо його до нового списку. Нарешті, ми друкуємо отриманий список, який містить елементи 'sheet1' яких немає в 'list2' .

system.out.println

Інша інформація:

Типи даних Set проти List:

Як згадувалося раніше, під час віднімання списків рядків рекомендується перетворювати списки на набори. Це тому, що набори оптимізовано для перевірки існування елементів і видалення дублікатів. Однак, якщо збереження порядку елементів є важливим, тоді, можливо, краще використовувати розуміння списку.

Зауваження щодо продуктивності:

Перетворення списків на набори може бути обчислювально витратною операцією, особливо для великих списків. Якщо продуктивність викликає занепокоєння, ви можете розглянути можливість використання альтернативних підходів, таких як розуміння списку або вираз генератора.

Мінливість:

Важливо відзначити, що набори є мінливий , а рядки і кортежі (які також можна використовувати як ітеровані типи даних) ні. Це означає, що коли ви віднімаєте множину з іншої множини, результуюча множина є мінливий , і ви можете змінити його вміст. З іншого боку, під час віднімання списку або кортежу з іншого списку або кортежу, отриманий список або кортеж не є змінним, і ви не можете змінити його вміст.

Вкладені списки:

Якщо ви працюєте з вкладеними списками, вам може знадобитися використати вкладений цикл або рекурсію, щоб відняти один список від іншого. Ось приклад:

 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']] 

У наведеному вище прикладі ми визначаємо два вкладені списки, 'sheet1' і 'list2' . Після цього ми використовуємо цикл for для повторення кожної пари підсписків 'sheet1' і 'list2' . Ми використовуємо розуміння списку, щоб відняти елементи кожного підсписку 'list2' з відповідного підсписку в ' лист1' . Нарешті, ми додаємо отримані підсписки до нового списку 'результат' .