logo

Odčítanie zoznamov reťazcov v Pythone

V Pythone je reťazec sekvencia znakov a zoznam je kolekcia prvkov, ktoré môžu byť akéhokoľvek typu údajov vrátane reťazcov. Odčítanie zoznamu reťazcov zahŕňa odstránenie prvkov, ktoré sú spoločné medzi dvoma zoznamy alebo struny .

Ak chcete odčítať jeden zoznam reťazcov od druhého, môžete použiť 'set' dátový typ v Pythone. Nastavený dátový typ je neusporiadaná kolekcia jedinečných prvkov. Operátor odčítania '-' možno použiť medzi dvoma množinami na nájdenie prvkov v prvej množine, ktoré nie sú prítomné v druhej množine.

katrina kaif

Príklad:

Tu je príklad odčítania jedného zoznamu reťazcov od druhého pomocou nastaveného typu údajov:

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

Výkon:

 ['apple', 'cherry'] 

Vo vyššie uvedenom príklade definujeme dva zoznamy, 'sheet1' a 'list2' . Potom konvertujeme každý zoznam na množinu pomocou 'set' funkciu v Pythone. Potom použijeme '-' operátora na odčítanie prvkov 'list2' od 'sheet1' . Nakoniec výslednú množinu prevedieme späť na zoznam pomocou 'zoznam' funkciu v Pythone.

Výsledkom je nový zoznam 'výsledok' ktorý obsahuje prvky 'sheet1' ktoré nie sú prítomné v 'list2' , ktorými sú v tomto prípade 'jablko' a 'čerešňa' .

Príklad:

Tu je ďalší príklad, ktorý ukazuje, ako odčítať zoznam reťazcov z jedného reťazca:

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

Výkon:

 'He wr!' 

Vo vyššie uvedenom príklade definujeme reťazec 'reťazec1' a zoznam reťazcov 'sheet1' . Potom použijeme porozumenie zoznamu na iteráciu každého znaku v 'reťazec1' a skontrolujte, či je prítomný v 'sheet1' . Ak postava nie je in 'sheet1' , pridáme ho do nového zoznamu pomocou 'pripojiť sa' metóda. Nakoniec výsledný zoznam prevedieme späť na reťazec.

Výsledkom je nový reťazec 'výsledok' ktorý obsahuje iba znaky 'reťazec1' ktoré nie sú prítomné v 'sheet1' , ktorými sú v tomto prípade 'H', 'e', ​​' ', 'w' , a 'r' .

Stojí za zmienku, že poradie prvkov vo výslednom zozname alebo reťazci nemusí byť zachované. Ak potrebujete zachovať poradie, môžete použiť porozumenie zoznamu s 'ak' na odfiltrovanie prvkov, ktoré sa nachádzajú v druhom zozname.

Príklad:

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

Výkon:

 ['apple', 'cherry'] 

Vo vyššie uvedenom príklade definujeme dva zoznamy, 'sheet1' a 'list2' . Potom použijeme porozumenie zoznamu na iteráciu každého prvku v 'sheet1' a skontrolujte, či je prítomný v 'list2' . Ak prvok nie je in 'list2' , pridáme ho do nového zoznamu. Nakoniec vytlačíme výsledný zoznam, ktorý obsahuje prvky z 'sheet1' ktoré nie sú prítomné v 'list2' .

java sa vytrhne zo slučky

Niektoré ďalšie informácie:

Nastaviť vs. zoznam typov údajov:

Ako už bolo spomenuté, pri odčítaní zoznamov reťazcov sa odporúča previesť zoznamy na množiny. Je to preto, že sady sú optimalizované na kontrolu existencie prvkov a odstraňovanie duplikátov. Ak je však dôležité zachovať poradie prvkov, potom môže byť lepšie použiť namiesto toho pochopenie zoznamu.

Úvahy o výkone:

Konverzia zoznamov na množiny môže byť výpočtovo nákladná operácia, najmä pri veľkých zoznamoch. Ak ide o výkon, možno budete chcieť zvážiť použitie alternatívnych prístupov, ako je porozumenie zoznamu alebo výraz generátora.

Premenlivosť:

Je dôležité poznamenať, že súpravy sú premenlivé , pričom struny a tuples (ktoré možno použiť aj ako iterovateľné dátové typy) nie sú. Znamená to, že keď odčítate množinu od inej množiny, výsledná množina je premenlivé a môžete upravovať jeho obsah. Na druhej strane, pri odčítaní zoznamu alebo n-tice od iného zoznamu alebo n-tice nie je výsledný zoznam alebo n-tica meniteľný a nemôžete upravovať jeho obsah.

Vnorené zoznamy:

Ak pracujete s vnorenými zoznamami, možno budete musieť použiť vnorenú slučku alebo rekurziu na odčítanie jedného zoznamu od druhého. Tu je príklad:

 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) 

Výkon:

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

Vo vyššie uvedenom príklade definujeme dva vnorené zoznamy, 'sheet1' a 'list2' . Potom použijeme cyklus for na iteráciu každého páru podzoznamov v 'sheet1' a 'list2' . Na odčítanie prvkov každého podzoznamu používame porozumenie zoznamu 'list2' z príslušného podzoznamu v ' list1' . Nakoniec výsledné podzoznamy pripojíme k novému zoznamu 'výsledok' .