Bir listedeki tüm dizeleri int'e dönüştür


603

Python, bir listedeki tüm dizeleri tamsayılara dönüştürmek istiyorum.

Eğer varsa:

results = ['1', '2', '3']

Nasıl yapabilirim:

results = [1, 2, 3]

1
Şuna

Yanıtlar:


1171

mapİşlevi kullanın (Python 2.x'te):

results = map(int, results)

Python 3'te, sonucu maplisteden dönüştürmeniz gerekir :

results = list(map(int, results))

23
Pylint'in kullanımını caydırıcı olduğuna dikkat çekmek istiyorum map, bu yüzden bu standardı kullanırsanız zaten liste kavrayışlarını kullanmaya hazırlanın. :)
ThorSummoner

6
Tersi (int listesini dize listesine dönüştürmek için): map (str, results)
Ali ISSA

12
Bu cevabı basitleştirebilirsiniz: sadece her zaman kullanın list(map(int, results)), herhangi bir Python sürümü için çalışır.
mvp

377

Liste kavrayışı kullanın :

results = [int(i) for i in results]

Örneğin

>>> results = ["1", "2", "3"]
>>> results = [int(i) for i in results]
>>> results
[1, 2, 3]

30
Liste anlama da harika.
OP'ye

3

Liste kavrayışından biraz daha genişletilmiş ancak aynı şekilde yararlı:

def str_list_to_int_list(str_list):
    n = 0
    while n < len(str_list):
        str_list[n] = int(str_list[n])
        n += 1
    return(str_list)

Örneğin

>>> results = ["1", "2", "3"]
>>> str_list_to_int_list(results)
[1, 2, 3]

Ayrıca:

def str_list_to_int_list(str_list):
    int_list = [int(n) for n in str_list]
    return int_list
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.