[英]convert a list of strings list into integers
請問你能幫幫我嗎? 我使用 Python 3.x 並將此變量 ex 轉換為整數列表。
ex = [['2003', '12', '27', '7', '8646'],
['2003', '12', '28', '7', '7645'],
['2003', '12', '29', '2', '12823'],
['2003', '12', '30', '2', '14438'],
['2003', '12', '31', '3', '12374']]
我試過這個功能,但它不能正常工作:
liste = []
def function_int(x):
for i in x:
liste.append(int[i])
return liste
感謝您的支持!
你實際上是在那里。 如果要處理嵌套列表,則需要嵌套循環 。
像這樣的東西。
def function_int(ex):
liste = []
for i in x:
liste.append([])
for j in i:
liste[-1].append(int(i))
return liste
在每次外部迭代中,我們將下一個內部列表附加到外部列表中。 在每次內部迭代中,將轉換后的整數值附加到最近附加的內部列表。
另請注意, int
是一個函數,用括號稱它,而不是方括號。
或者,您可以使用列表解析來執行此操作。
liste = [[int(y) for y in x] for x in ex]
哪個更簡潔,可讀性損失最小。
另一種可能性是轉換期間出現ValueError
的可能性。 只有在使用嵌套循環代碼時才能處理它。 你可以使用try-except
處理程序來完成它。
try:
liste[-1].append(int(i))
except ValueError:
pass
除了其他答案,您可以使用另一種方法:
integer_x = [list(map(int, each)) for each in x]
print(integer_x)
看看ast模塊
你可以這樣做:
import ast
liste = []
for l in ex:
for i in range(len(l)):
l[i] = ast.literal_eval(l[i])
liste.append(l)
您的問題是ex是一個列表列表。 因此,如果您想將ex中的所有內容放入新列表中,則需要兩個循環:
for i in x:
for j in i:
liste.append(int(j))
在我看來,這是執行速度最快,效率最高的方式,注意:如果你想要一個新的列表然后改變ex[:] =
to liste =
或者你想要調用你的變量,它會覆蓋ex
try:
#check out this module for faster string checking
from fastnumbers import *
except:
pass
ex = [['2003', '12', '27', '7', '8646'],
['2003', '12', '28', '7', '7645'],
['2003', '12', '29', '2', '12823'],
['2003', '12', '30', '2', '14438'],
['2003', '12', '31', '3', '12374']]
ex[:] = [[int(e) if e.isdigit() else e for e in sl] for sl in ex]
結果:
for sublist in ex:
print (sublist)
[2003, 12, 27, 7, 8646]
[2003, 12, 28, 7, 7645]
[2003, 12, 29, 2, 12823]
[2003, 12, 30, 2, 14438]
[2003, 12, 31, 3, 12374]
要解釋切片表示法,尤其是在=
左側使用,請參閱此問題: 賦值如何與python list slice一起使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.