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
感谢您的支持!
答案 0 :(得分:3)
你实际上已经到了一半。如果要处理嵌套列表,则需要嵌套循环。
像这样。
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
答案 1 :(得分:1)
除了其他答案之外,您还可以使用另一种方法:
integer_x = [list(map(int, each)) for each in x]
print(integer_x)
答案 2 :(得分:1)
看一下 ast 模块
你可以这样做:
import ast
liste = []
for l in ex:
for i in range(len(l)):
l[i] = ast.literal_eval(l[i])
liste.append(l)
答案 3 :(得分:0)
您的问题是ex是一个列表列表。因此,如果您想将ex中的所有内容放入新列表中,则需要两个循环:
for i in x:
for j in i:
liste.append(int(j))
答案 4 :(得分:0)
在我看来,这是执行此操作的最快内存最快的方式,请注意:如果您想要新列表,则会覆盖ex
,然后将ex[:] =
更改为liste =
或任何您想要调用你的变量
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]
要解释切片表示法,尤其是在=
左侧使用,请参阅此问题:How assignment works with python list slice