Converteer alle strings in een lijst naar int

In Python wil ik alle strings in een lijst converteren naar gehele getallen.

Dus als ik heb:

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

Hoe maak ik het:

results = [1, 2, 3]

Antwoord 1, autoriteit 100%

Gebruik de functie map( in Python 2.x):

results = map(int, results)

In Python 3 moet je het resultaat converteren van mapnaar een lijst:

results = list(map(int, results))

Antwoord 2, autoriteit 33%

Gebruik een lijstbegrip:

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

bijv.

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

Antwoord 3

Iets uitgebreider dan lijstbegrip, maar ook handig:

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)

bijv.

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

Ook:

def str_list_to_int_list(str_list):
    int_list = [int(n) for n in str_list]
    return int_list

Antwoord 4

Als uw lijst pure integer-snaren bevat, is de geaccepteerde AWNSWER de manier om te gaan. Deze oplossing zal crashen als u het dingen geeft die geen gehele getallen zijn.

Dus: als u gegevens hebt die inten kunnen bevatten, mogelijk ook drijft of andere dingen – u kunt uw eigen functie gebruiken met errorafhandeling:

def maybeMakeNumber(s):
    """Returns a string 's' into a integer if possible, a float if needed or
    returns it as is."""
    # handle None, "", 0
    if not s:
        return s
    try:
        f = float(s)
        i = int(f)
        return i if f == i else f
    except ValueError:
        return s
data = ["unkind", "data", "42", 98, "47.11", "of mixed", "types"]
converted = list(map(maybeMakeNumber, data))
print(converted)

Uitgang:

['unkind', 'data', 42, 98, 47.11, 'of mixed', 'types']

Om ook de iterables in de iterables te verwerken, kunt u deze helper gebruiken:

from collections.abc import Iterable, Mapping
def convertEr(iterab):
    """Tries to convert an iterable to list of floats, ints or the original thing
    from the iterable. Converts any iterable (tuple,set, ...) to itself in output.
    Does not work for Mappings  - you would need to check abc.Mapping and handle 
    things like {1:42, "1":84} when converting them - so they come out as is."""
    if isinstance(iterab, str):
        return maybeMakeNumber(iterab)
    if isinstance(iterab, Mapping):
        return iterab
    if isinstance(iterab, Iterable):
        return  iterab.__class__(convertEr(p) for p in iterab)
data = ["unkind", {1: 3,"1":42}, "data", "42", 98, "47.11", "of mixed", 
        ("0", "8", {"15", "things"}, "3.141"), "types"]
converted = convertEr(data)
print(converted)

Uitvoer:

['unkind', {1: 3, '1': 42}, 'data', 42, 98, 47.11, 'of mixed', 
 (0, 8, {'things', 15}, 3.141), 'types'] # sets are unordered, hence diffrent order

Antwoord 5

Hier is een eenvoudige oplossing met uitleg voor uw vraag.

a=['1','2','3','4','5'] #The integer represented as a string in this list
 b=[] #Fresh list
 for i in a: #Declaring variable (i) as an item in the list (a).
     b.append(int(i)) #Look below for explanation
 print(b)

Hier wordt append()gebruikt om items ( d.w.z. integer versie van string (i) in dit programma ) toe te voegen aan het einde van de lijst (b).

Opmerking: int()is een functie die helpt om een geheel getal in de vorm van een string terug te zetten naar zijn geheel getal.

Uitvoerconsole:

[1, 2, 3, 4, 5]

We kunnen de stringitems in de lijst dus alleen naar een geheel getal converteren als de gegeven string volledig uit getallen bestaat, anders wordt er een fout gegenereerd.


Antwoord 6

U kunt het eenvoudig in één regel doen wanneer u invoer neemt.

[int(i) for i in input().split("")]

Verdeel het waar je wilt.

Als u een lijst wilt converteren die geen lijst is, plaatst u gewoon uw lijstnaam op de plaats van input().split("").


Antwoord 7

Ik wil ook Python | Alle strings in de lijst converteren naar gehele getallen

Methode #1: Naïeve methode

# Python3 code to demonstrate 
# converting list of strings to int 
# using naive method 
# initializing list 
test_list = ['1', '4', '3', '6', '7'] 
# Printing original list 
print ("Original list is : " + str(test_list)) 
# using naive method to 
# perform conversion 
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)) 

Uitvoer:

Original list is : ['1', '4', '3', '6', '7']
Modified list is : [1, 4, 3, 6, 7]

Methode #2: Lijstbegrip gebruiken

# Python3 code to demonstrate 
# converting list of strings to int 
# using list comprehension 
# initializing list 
test_list = ['1', '4', '3', '6', '7'] 
# Printing original list 
print ("Original list is : " + str(test_list)) 
# 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)) 

Uitvoer:

Original list is : ['1', '4', '3', '6', '7']
Modified list is : [1, 4, 3, 6, 7]

Methode #3 : Map() gebruiken

# Python3 code to demonstrate 
# converting list of strings to int 
# using map() 
# initializing list 
test_list = ['1', '4', '3', '6', '7'] 
# Printing original list 
print ("Original list is : " + str(test_list)) 
# using map() to 
# perform conversion 
test_list = list(map(int, test_list)) 
# Printing modified list 
print ("Modified list is : " + str(test_list)) 

Uitvoer:

Original list is : ['1', '4', '3', '6', '7']
Modified list is : [1, 4, 3, 6, 7]

Antwoord 8

Je kunt string-lijstitems gemakkelijk converteren naar int-items met behulp van loop-steno in python

Stel dat je een string hebt result = ['1','2','3']

Gewoon doen,

result = [int(item) for item in result]
print(result)

Het geeft je output zoals

[1,2,3]

Other episodes