logo

Одузмите листе стрингова у Питхон-у

У Питхон-у, стринг је низ знакова, а листа је колекција елемената који могу бити било ког типа података, укључујући низове. Одузимање листе стрингова укључује уклањање елемената који су заједнички за два листе или жице .

Да бисте одузели једну листу низова од друге, можете користити 'комплет' тип података у Пајтону. Постављени тип података је неуређена колекција јединствених елемената. Оператор одузимања '-' може се користити између два скупа за проналажење елемената у првом скупу који нису присутни у другом скупу.

Пример:

Ево примера одузимања једне листе стрингова од друге помоћу типа података скупа:

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

Излаз:

 ['apple', 'cherry'] 

У горњем примеру дефинишемо две листе, 'лист1' и 'лист2' . Након тога сваку листу конвертујемо у скуп користећи 'комплет' функција у Питхон-у. Након тога користимо '-' оператор за одузимање елемената од 'лист2' из 'лист1' . Коначно, конвертујемо резултујући скуп назад у листу користећи 'листа' функција у Питхон-у.

Ово резултира новом листом 'резултат' који садржи елементе 'лист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' , који су у овом случају 'Х', 'е', ' ', 'в' , и 'р' .

Вреди напоменути да редослед елемената у резултујућој листи или стрингу можда неће бити сачуван. Ако треба да сачувате редослед, можете да користите разумевање листе са ан 'ако' изјава за филтрирање елемената који су присутни на другој листи.

Пример:

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

Још неке информације:

Сет у односу на типове података листе:

Као што је раније поменуто, приликом одузимања листа стрингова, препоручује се да се листе конвертују у скупове. То је зато што су скупови оптимизовани за проверу постојања елемената и уклањање дупликата. Међутим, ако је очување редоследа елемената важно, можда би било боље користити разумевање листе.

Разматрања учинка:

Конвертовање листа у скупове може бити рачунски скупа операција, посебно за велике листе. Ако су перформансе забрињавајуће, можда ћете желети да размислите о коришћењу алтернативних приступа као што су разумевање листе или израз генератора.

куцани датум

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

Важно је напоменути да су сетови променљиво , док жице и туплес (који се такође могу користити као итеративни типови података) нису. То значи да када одузмете скуп од другог скупа, резултујући скуп је променљиво , и можете да измените његов садржај. С друге стране, када одузимате листу или торку од друге листе или торке, резултујућа листа или торка није променљива и не можете да мењате њен садржај.

Угнежђене листе:

Ако радите са угнежђеним листама, можда ћете морати да користите угнежђену петљу или рекурзију да бисте одузели једну листу од друге. Ево примера:

 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' . Након тога, користимо петљу фор за понављање сваког пара подлиста 'лист1' и 'лист2' . Користимо разумевање листе да бисмо одузели елементе сваке подлисте 'лист2' са одговарајуће подлисте у ' лист1' . Коначно, резултујуће подлисте додајемо на нову листу 'резултат' .