Mam listę powiedzieć:Jak przekonwertować ciągi liczb na liczby całkowite na liście?
['batting average', '306', 'ERA', '1710']
Jak mogę przekonwertować zamierzonych numerów bez dotykania strun?
Dziękuję za pomoc.
Mam listę powiedzieć:Jak przekonwertować ciągi liczb na liczby całkowite na liście?
['batting average', '306', 'ERA', '1710']
Jak mogę przekonwertować zamierzonych numerów bez dotykania strun?
Dziękuję za pomoc.
changed_list = [int(f) if f.isdigit() else f for f in original_list]
Dane wyglądają tak, jakbyś wiedział, na których pozycjach powinny znajdować się liczby. W tym przypadku to chyba lepiej jawnie przekonwertować dane w tych pozycjach, a nie tylko konwersja coś, co wygląda jak numer:
ls = ['batting average', '306', 'ERA', '1710']
ls[1] = int(ls[1])
ls[3] = int(ls[3])
Tak jest to najlepsze rozwiązanie dla przypadku statycznego, podczas gdy Alex jest najlepszy dla przypadku dynamicznego. – Unknown
Spróbuj tego:
def convert(someList):
for item in someList:
try:
yield int(item)
except ValueError:
yield item
newList= list(convert(oldList))
a= ['batting average', '306', 'ERA', '1710.5']
[f if sum([c.isalpha() for c in f]) else float(f) for f in a ]
jeśli lista zawiera pływak , string i int (jak wskazano przez @ d.putto w komentarzu)
'suma ([c.isalpha() dla cw f])' jest dość nieoptymalnym sposobem sprawdzenia "czy jakakolwiek litera wf jest alfabetyczna" - spróbuj 'any (c.isalpha() dla cw f) 'dla lepszej czytelności i wydajności. Oczywiście oba będą się nie sprawdzać, jeśli "f" będzie równe na przykład ''!' '- ciągowi, który nie jest liczbą, ale nie ma znaków alfanumerycznych - a także nie będzie konwertować np." 1.7e3 "- ciąg znaków, który zawiera znak alfanumeryczny, ale mimo wszystko byłby doskonale w porządku jako argument do 'float' (" notacja wykładnicza "). –
prawda. dobry punkt ... zamieściłem to tylko po to, by odpowiedzieć na konkretny przykład d.putto. Powinienem przemyśleć jeszcze raz, zanim opublikuję moją połowiczną odpowiedź! –
Elegancki jednolinijkowy. Spójrz na moc rozumienia list. – mkClark
myślał na podobnych liniach – Nope
dobre rozwiązanie, ale co, jeśli lista zawiera wartości zmiennoprzecinkowe również "[" średnia mrugnięcia "," 306 "," ERA "," 1710.5 "]' –