Savstarpēju konvertēšanu starp datu veidiem python bibliotēkas atvieglo diezgan viegli. Bet problēma, kas saistīta ar visa virkņu saraksta pārvēršanu veselos skaitļos, ir diezgan izplatīta izstrādes jomā. Apspriedīsim dažus veidus, kā atrisināt šo konkrēto problēmu.
Visu saraksta virkņu konvertēšana veselos skaitļos Izmantojot eval()
Python eval() funkcija parsējiet izteiksmes argumentu un novērtējiet to kā python izteiksmi un palaiž Python izteiksmi(kodu). Ja izteiksme ir int attēlojums, Python pārvērš argumentu par veselu skaitli.
Python3
lis> => [> '1'> ,> '-4'> ,> '3'> ,> '-6'> ,> '7'> ]> res> => [> eval> (i)> for> i> in> lis]> print> (> 'Modified list is: '> , res)> |
>
>
šķirošanas kaudze
Izvade:
Modified list is: [1, -4, 3, -6, 7]>
Visu sarakstā esošo virkņu pārvēršana veselos skaitļos Naivā metode
Šī ir visvispārīgākā metode, kas pārsteidz jebkuru programmētāju, veicot šāda veida darbības. Vienkārši pārskatiet visu sarakstu un pārveidojiet katru saraksta virkni par int pēc veida liešanas.
Python3
test_list> => [> '1'> ,> '4'> ,> '3'> ,> '6'> ,> '7'> ]> # using loop> for> i> in> range> (> 0> ,> len> (test_list)):> > test_list[i]> => int> (test_list[i])> # Printing modified list> print> (> 'Modified list is : '> +> str> (test_list))> |
>
>
Izvade:
Modified list is: [1, 4, 3, 6, 7]>
Visu sarakstā esošo virkņu pārvēršana veselos skaitļos Izmantojot saraksta izpratne
Šī ir tikai sava veida iepriekš minētās metodes kopija, kas tikko ieviesta, izmantojot saraksta izpratni, sava veida saīsinājumu, ko izstrādātājs vienmēr meklē. Tas ietaupa laiku un risinājuma kodēšanas sarežģītību.
Python3
test_list> => [> '1'> ,> '4'> ,> '3'> ,> '6'> ,> '7'> ]> # using list comprehension to> # perform conversion> test_list> => [> int> (i)> for> i> in> test_list]> > # Printing modified list> print> (> 'Modified list is : '> +> str> (test_list))> |
>
>
Izvade:
Modified list is : [1, 4, 3, 6, 7]>
Visu sarakstā esošo virkņu pārvēršana veselos skaitļos Izmantojot karte ()
Šī ir elegantākā, pitoniskākā un ieteicamākā metode šī konkrētā uzdevuma veikšanai. Šī funkcija ir paredzēta tikai šāda veida uzdevumiem, un tā ir jāizmanto to veikšanai.
Python3
test_list> => [> '1'> ,> '4'> ,> '3'> ,> '6'> ,> '7'> ]> # using map() to> # perform conversion> test_list> => list> (> map> (> int> , test_list))> # Printing modified list> print> (> 'Modified list is : '> +> str> (test_list))> |
>
>
Izvade:
Modified list is : [1, 4, 3, 6, 7]>
Visu sarakstā esošo virkņu pārveidošana par veseliem skaitļiem Virkņu saraksts ar jauktu veselu skaitļu attēlojumu
Šeit mēs vispirms pārveidosim katru virkni par pludiņu un pēc tam pārveidosim to par veselu skaitli, izmantojot funkciju round(), pretējā gadījumā tiks parādīta kļūda.
Python3
lis> => [> '1.1'> ,> '4'> ,> '3.5'> ,> '6.7'> ,> '7.2'> ]> res> => [> round> (> float> (i))> for> i> in> lis]> print> (> 'Modified list is: '> , res)> |
>
>
Izvade:
Modified list is: [1, 4, 4, 7, 7]>
Visu saraksta virkņu konvertēšana veselos skaitļos Izmantojot funkciju ast.literal_eval() no ast moduļa
Vēl viena pieeja, ko var izmantot, lai pārvērstu virkņu sarakstu veselu skaitļu sarakstā, ir ast moduļa funkcijas ast.literal_eval() izmantošana. Šī funkcija ļauj novērtēt virkni kā Python literālu, kas nozīmē, ka tā var parsēt un novērtēt virknes, kas satur Python izteiksmes, piemēram, skaitļus, sarakstus, vārdnīcas utt.
Šeit ir piemērs, kā izmantot ast.literal_eval(), lai pārvērstu virkņu sarakstu par veselu skaitļu sarakstu:
Python3
import> ast> # Initialize list of strings> test_list> => [> '1'> ,> '4'> ,> '3'> ,> '6'> ,> '7'> ]> # Convert strings to integers using ast.literal_eval()> test_list> => [ast.literal_eval(s)> for> s> in> test_list]> # Print resulting list> print> (> 'Modified list:'> , test_list)> #This code is contributed by Edula Vinay Kumar Reddy> |
>
>Izvade
Modified list: [1, 4, 3, 6, 7]>
Laika sarežģītība, izmantojot funkciju ast.literal_eval() no ast moduļa, lai pārvērstu virkņu sarakstu veselu skaitļu sarakstā, ir O(n), kur n ir saraksta garums. Tas nozīmē, ka šīs pieejas izpildei nepieciešamais laiks ir tieši proporcionāls ievades saraksta lielumam.
Kosmosa sarežģītības ziņā šīs pieejas telpas sarežģītība ir O(n), jo tā izveido jaunu veselu skaitļu sarakstu, kas ir tāda paša izmēra kā ievades saraksts.
Visu sarakstā esošo virkņu konvertēšana veselos skaitļos Funkcijas numpy.array() izmantošana
- Definējiet virkņu sarakstu
- Pārveidojiet sarakstu par int tipa numpy masīvu, izmantojot funkciju numpy.array().
- Konvertējiet numpy masīvu atpakaļ uz sarakstu, izmantojot list() funkcija
- Izdrukājiet modificēto sarakstu
Python3
import> numpy as np> > # Define list of strings> my_list> => [> '1'> ,> '4'> ,> '3'> ,> '6'> ,> '7'> ]> > # Convert list to numpy array of type int> my_array> => np.array(my_list, dtype> => int> )> > # Convert numpy array back to list> modified_list> => list> (my_array)> > # Print modified list> print> (> 'Modified list is: '> , modified_list)> |
>
>
Izvade:
Modified list is: [1, 4, 3, 6, 7]>
Laika sarežģītība: šīs pieejas laika sarežģītība ir O(n), kur n ir saraksta garums. Funkcijai numpy.array() ir nepieciešams O(n) laiks, lai izveidotu jaunu masīvu, un funkcijai list() nepieciešams O(n) laiks, lai masīvu pārvērstu atpakaļ sarakstā.
Telpas sarežģītība: šīs pieejas telpas sarežģītība ir O(n), jo tā izveido jaunu int tipa masīvu, kas ir tāda paša izmēra kā ievades saraksts.
Pieeja: izmantojot funkciju json.loads():
Algoritms:
- Izveidojiet virkņu sarakstu test_list ar vērtībām ['1', '4', '3', '6', '7']
- Izmantojiet metodi join(), lai savienotu virknes test_list kopā ar komatiem, kā rezultātā tiek iegūta virkne '1,4,3,6,7'.
- Pievienojiet kvadrātiekavas ap iegūto virkni, iegūstot virkni “[1,4,3,6,7]”.
Izmantojiet metodi loads() no json bibliotēkas, lai parsētu virkni kā JSON masīvu, iegūstot sarakstu [1, 4, 3, 6, 7] - Piešķiriet iegūtajam sarakstam new_list
- Drukājiet virkni Modificētais saraksts ir :, kam seko new_list virknes attēlojums
Python3
import> json> test_list> => [> '1'> ,> '4'> ,> '3'> ,> '6'> ,> '7'> ]> new_list> => json.loads(> '['> +> ','> .join(test_list)> +> ']'> )> print> (> 'Modified list is : '> +> str> (new_list))> #This code is contributed by Vinay pinjala> |
>
>Izvade
Modified list is : [1, 4, 3, 6, 7]>
Laika sarežģītība: O(n), kur n ir testa_saraksta garums. Tas ir tāpēc, ka join() metodei ir nepieciešams O(n) laiks, lai savienotu virknes, un loads() metodei nepieciešams O(n) laiks, lai parsētu iegūto virkni.
Telpas sarežģītība: O(n), jo iegūtais saraksts aizņem O(n) vietu atmiņā.
Visas sarakstā esošās virknes pārvērš veselos skaitļos, izmantojot moduli re
soli pa solim algoritms regulārās izteiksmes pieejai, lai izvilktu skaitliskās vērtības no virkņu saraksta
objektīvs java
- Definējiet ievades virkņu sarakstu.
- Definējiet regulārās izteiksmes modeli, lai tas atbilstu virkņu skaitliskām vērtībām.
- Inicializējiet tukšu sarakstu, lai saglabātu konvertētās skaitliskās vērtības.
- Atkārtojiet katru ievades saraksta virkni.
- Izmantojiet regulārās izteiksmes modeli, lai virknē meklētu skaitlisku vērtību.
- Ja tiek atrasta atbilstība, izņemiet saskaņoto apakšvirkni un pārveidojiet to par pludiņu.
- Pievienojiet konvertēto vērtību izvades sarakstam.
- Kad visas ievades saraksta virknes ir apstrādātas, atgrieziet izvades sarakstu.
Python3
import> re> # Define the input list> lis> => [> '1'> ,> '-4'> ,> '3'> ,> '-6'> ,> '7'> ]> # Define a regular expression pattern to match numerical values> pattern> => re.> compile> (r> '-?d+(?:.d+)?'> )> # Initialize an empty list to store converted values> res> => []> # Iterate over each string in the input list> for> s> in> lis:> > # Use the pattern to search for a numerical value in the string> > match> => pattern.search(s)> > # If a match is found, extract the matched substring and convert it to a float> > if> match> is> not> None> :> > res.append(> int> (match.group()))> # Print the modified list of converted values> print> (> 'Modified list is: '> , res)> |
>
>Izvade
Modified list is: [1, -4, 3, -6, 7]>
Laika sarežģītība: Šīs pieejas laika sarežģītība ir O(nm), kur n ir virkņu skaits ievades sarakstā un m ir jebkuras virknes maksimālais garums sarakstā. Regulārās izteiksmes modelis ir jāpiemēro katrai saraksta virknei, kas sliktākajā gadījumā aizņem O(m) laiku. Tāpēc kopējā laika sarežģītība ir O (nm).
Papildtelpas sarežģītība: Šīs pieejas palīgtelpas sarežģītība ir O(k), kur k ir skaitlisko vērtību skaits ievades sarakstā. Mums ir jāsaglabā katra pārveidotā skaitliskā vērtība izvades sarakstā, kam nepieciešama O(k) vieta. Turklāt mums ir jāsaglabā regulāras izteiksmes objekts, kam nepieciešama pastāvīga vieta. Tāpēc kopējā palīgtelpas sarežģītība ir O (k).