logo

Atņemiet virkņu sarakstus Python

Programmā Python virkne ir rakstzīmju secība, bet saraksts ir elementu kopums, kas var būt jebkura veida datu, ieskaitot virknes. Atņemšana virkņu saraksta daļa ietver elementu noņemšanu, kas ir kopīgi starp diviem sarakstus vai stīgas .

pyspark

Lai atņemtu vienu virkņu sarakstu no cita, varat izmantot 'set' datu tips Python. Kopas datu tips ir nesakārtota unikālu elementu kolekcija. Atņemšanas operators '-' var izmantot starp divām kopām, lai atrastu elementus pirmajā kopā, kas nav iekļauti otrajā kopā.

Piemērs:

Šeit ir piemērs viena virkņu saraksta atņemšanai no cita, izmantojot iestatīto datu tipu:

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

Izvade:

 ['apple', 'cherry'] 

Iepriekš minētajā piemērā mēs definējam divus sarakstus, 'lapa1' un 'saraksts2' . Pēc tam mēs pārvēršam katru sarakstu komplektā, izmantojot 'set' funkcija Python. Pēc tam mēs izmantojam '-' operators, lai atņemtu elementus 'saraksts2' no 'lapa1' . Visbeidzot, mēs pārvēršam iegūto kopu atpakaļ sarakstā, izmantojot 'saraksts' funkcija Python.

Tā rezultātā tiek izveidots jauns saraksts 'rezultāts' kas satur elementus 'lapa1' kuras nav sastopamas 'saraksts2' , kas šajā gadījumā ir 'ābols' un 'ķirsis' .

Piemērs:

Šeit ir vēl viens piemērs, kas parāda, kā no vienas virknes atņemt virkņu sarakstu:

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

Izvade:

 'He wr!' 

Iepriekš minētajā piemērā mēs definējam virkni 'string1' un virkņu saraksts 'lapa1' . Pēc tam mēs izmantojam saraksta izpratni, lai atkārtotu katru rakstzīmi 'string1' un pārbaudiet, vai tas ir iekšā 'lapa1' . Ja varonis nav iekšā 'lapa1' , mēs to pievienojam jaunam sarakstam, izmantojot 'pievienoties' metodi. Visbeidzot mēs pārvēršam iegūto sarakstu atpakaļ virknē.

Tā rezultātā tiek izveidota jauna virkne 'rezultāts' kas satur tikai rakstzīmes 'string1' kuras nav sastopamas 'lapa1' , kas šajā gadījumā ir 'H', 'e', '', 'w' , un 'r' .

Ir vērts atzīmēt, ka elementu secība iegūtajā sarakstā vai virknē var netikt saglabāta. Ja jums ir jāsaglabā pasūtījums, varat izmantot saraksta izpratni ar 'ja' paziņojumu, lai filtrētu elementus, kas atrodas otrajā sarakstā.

Piemērs:

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

Izvade:

 ['apple', 'cherry'] 

Iepriekš minētajā piemērā mēs definējam divus sarakstus, 'lapa1' un 'saraksts2' . Pēc tam mēs izmantojam saraksta izpratni, lai atkārtotu katru elementu 'lapa1' un pārbaudiet, vai tas ir iekšā 'saraksts2' . Ja elements nav iekšā 'saraksts2' , mēs to pievienojam jaunam sarakstam. Visbeidzot, mēs izdrukājam iegūto sarakstu, kurā ir elementi 'lapa1' kuras nav sastopamas 'saraksts2' .

Daža cita informācija:

Iestatīšanas un saraksta datu tipi:

Kā minēts iepriekš, atņemot virkņu sarakstus, ieteicams sarakstus pārvērst kopās. Tas ir tāpēc, ka kopas ir optimizētas, lai pārbaudītu elementu esamību un noņemtu dublikātus. Tomēr, ja elementu secības saglabāšana ir svarīga, tā vietā var būt labāk izmantot saraksta izpratni.

Veiktspējas apsvērumi:

Sarakstu konvertēšana kopās var būt skaitļošanas ziņā dārga darbība, īpaši lieliem sarakstiem. Ja veiktspēja rada bažas, varat apsvērt iespēju izmantot alternatīvas pieejas, piemēram, saraksta izpratni vai ģeneratora izteiksmi.

Maināmība:

Ir svarīgi atzīmēt, ka komplekti ir mainīgs , kamēr stīgas un korteži (kurus var izmantot arī kā atkārtojamus datu tipus) nav. Tas nozīmē, ka, atņemot kopu no citas kopas, iegūtā kopa ir mainīgs , un jūs varat mainīt tā saturu. No otras puses, atņemot sarakstu vai virkni no cita saraksta vai virknes, iegūtais saraksts vai kortežs nav maināms, un jūs nevarat mainīt tā saturu.

Ligzdotie saraksti:

Ja strādājat ar ligzdotiem sarakstiem, iespējams, būs jāizmanto ligzdota cilpa vai rekursija, lai vienu sarakstu atņemtu no cita. Šeit ir piemērs:

 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) 

Izvade:

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

Iepriekš minētajā piemērā mēs definējam divus ligzdotus sarakstus, 'lapa1' un 'saraksts2' . Pēc tam mēs izmantojam for cilpu, lai atkārtotu katru apakšsarakstu pāri 'lapa1' un 'saraksts2' . Mēs izmantojam saraksta izpratni, lai atņemtu katra apakšsaraksta elementus 'saraksts2' no atbilstošā apakšsaraksta ' lapa1' . Visbeidzot, mēs pievienojam iegūtos apakšsarakstus jaunam sarakstam 'rezultāts' .