将字符串列表转换为整数

时间:2017-10-26 20:48:57

标签: python list

你可以帮我吗?我使用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

感谢您的支持!

5 个答案:

答案 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