de-vraag
  • Otázky
  • Značky
  • Používatelia
Oznámenia
Odmeny
Registrácia
Po registrácii budete informovaní o odpovediach a komentároch na vaše otázky.
Prihlásiť sa
Ak už máte konto, prihláste sa a skontrolujte nové oznámenia.
Za pridané otázky, odpovede a komentáre budú udelené odmeny.
Viac na
Zdroj
Upraviť
 elfuego1
elfuego1
Question

Ako previesť reťazce na celé čísla v jazyku Python?

Z dotazu MySQL mám takýto tuple tuplov:

T1 = (('13', '17', '18', '21', '32'),
      ('07', '11', '13', '14', '28'),
      ('01', '05', '06', '08', '15', '16'))

Chcel by som previesť všetky reťazcové prvky na celé čísla a vrátiť ich späť do zoznamu zoznamov:

T2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]

Snažil som sa to dosiahnuť pomocou eval, ale zatiaľ som nedostal žiadny slušný výsledok.

424 2009-03-13T10:53:59+00:00 3
 codeforester
codeforester
Edited question 28 máj 2017 в 8:06
Programovanie
python
string
integer
Popular videos
Eva Mészárosová - Základy programovania v jazyku Python pomocou korytnačej grafiky
Eva Mészárosová - Základy programovania v jazyku Python pomocou korytnačej grafiky
pred 4 rokmi
Jak programovat grafiku v Pythonu - návod pro začátečníky
Jak programovat grafiku v Pythonu - návod pro začátečníky
pred 3 rokmi
Programovanie (1) - prvá prednáška | úvod programovací jazyk Python
Programovanie (1) - prvá prednáška | úvod programovací jazyk Python
pred 2 rokmi
10 - Vyhľadanie čísla v telefónnej centrále
10 - Vyhľadanie čísla v telefónnej centrále
pred 4 rokmi
10   Procedúry a funkcie v jazyku C
10 Procedúry a funkcie v jazyku C
pred 6 mesiacmi
Příkazy pro tvorbu cyklů v jazyce C
Příkazy pro tvorbu cyklů v jazyce C
pred 7 rokmi
Chcete být programátor? Raději si to dobře rozmyslete...
Chcete být programátor? Raději si to dobře rozmyslete...
pred 6 rokmi
6 Nejžádanějších programovacích jazyků 2017
6 Nejžádanějších programovacích jazyků 2017
pred 4 rokmi
15   Reťazce v jazyku C
15 Reťazce v jazyku C
pred 6 mesiacmi
18   Bitové polia v jazyku C
18 Bitové polia v jazyku C
pred 6 mesiacmi
07   Cykly v jazyku C
07 Cykly v jazyku C
pred 6 mesiacmi
Zákl. C - Podmienky v jazyku C
Zákl. C - Podmienky v jazyku C
pred 5 rokmi
2021-08 [prednáška] Natívne korutiny v jazyku Python
2021-08 [prednáška] Natívne korutiny v jazyku Python
pred rokom
2020-08 [prednáška] Async IO v jazyku Python
2020-08 [prednáška] Async IO v jazyku Python
pred 2 rokmi
💣 408☞Zvieratko prekladateľom ║CodeCombat Python║ Programovanie s Yetim
💣 408☞Zvieratko prekladateľom ║CodeCombat Python║ Programovanie s Yetim
pred 5 rokmi
« Predchádzajúci
Ďalšie »
This question has 1 odpoveď in English, to read them log in to your account.
Solution / Answer
 unwind
unwind
13 marec 2009 в 10:58
2009-03-13T10:58:42+00:00
Viac na
Zdroj
Upraviť
#8895082

int() je štandardná vstavaná funkcia jazyka Python na prevod reťazca na celočíselnú hodnotu. Zavoláte ju s reťazcom obsahujúcim číslo ako argument a funkcia vráti číslo prevedené na celé číslo:

print (int("1") + 1)

Vyššie uvedené číslo vypíše 2.

Ak poznáte štruktúru vášho zoznamu T1 (že jednoducho obsahuje zoznamy, len na jednej úrovni), môžete to urobiť v Pythone 2:

T2 = [map(int, x) for x in T1]

V Pythone 3:

T2 = [list(map(int, x)) for x in T1]
 Timo
Timo
Edited answer 22 marec 2018 в 5:59
607
0
Will Harris
Will Harris
13 marec 2009 в 11:02
2009-03-13T11:02:30+00:00
Viac na
Zdroj
Upraviť
#8895083

Môžete to urobiť pomocou porozumenia zoznamu:

T2 = [[int(column) for column in row] for row in T1]

Vnútorné chápanie zoznamu ([int(stĺpec) pre stĺpec v riadku]) vytvorí list intov zo sekvencie objektov, ktoré možno chápať ako int, napríklad desatinné reťazce, v riadku. Vonkajšie chápanie zoznamu ([... for row in T1])) vytvorí zoznam výsledkov chápania vnútorného zoznamu aplikovaného na každú položku v T1.

Úryvok kódu zlyhá, ak niektorý z riadkov obsahuje objekty, ktoré sa nedajú konvertovať pomocou int. Ak chcete spracovať riadky obsahujúce nedecimálne reťazce, budete potrebovať inteligentnejšiu funkciu.

Ak poznáte štruktúru riadkov, môžete vnútorné chápanie zoznamu nahradiť volaním funkcie daného riadku. Napr.

T2 = [parse_a_row_of_T1(row) for row in T1]
Will Harris
Will Harris
Edited answer 13 marec 2009 в 11:28
28
0
 AKX
AKX
13 marec 2009 в 11:04
2009-03-13T11:04:40+00:00
Viac na
Zdroj
Upraviť
#8895084

Ak ide len o tuple tuplov, postačí niečo ako rows=[map(int, row) for row in rows]. (Je tam pochopenie zoznamu a volanie map(f, lst), ktoré sa rovná [f(a) pre a v lst].)

Eval nie je to, čo chcete urobiť, v prípade, že vo vašej databáze je z nejakého dôvodu niečo ako __import__("os").unlink("importantsystemfile"). Vždy overujte vstup (ak ničím iným, výnimka int() sa vyvolá, ak máte zlý vstup).

 AKX
AKX
Edited answer 13 marec 2009 в 11:36
1
0
Pridať otázku
Kategórie
Všetky
Technológia
Kultúra / Rekreácia
Život / Umenie
Veda
Profesionálne
Obchod
Používatelia
Všetky
New
Popular
1
365
Registered pred dňom
2
True Image
Registered pred dňom
3
archana agarwal
Registered pred 3 dňami
4
Maxim Zhilyaev
Registered pred 6 dňami
5
adambotsfford adambotsfford
Registered pred týždňom
DA
DE
EL
ES
ET
FR
ID
IT
JA
KO
LV
NL
PL
PT
RU
SK
ZH
© de-vraag 2022
Zdroj
stackoverflow.com
na základe licencie cc by-sa 3.0 s uvedením autora