如何将此列表转换为int

时间:2019-04-14 19:59:35

标签: python list int

我有以下列表:

[['3*4'],
 ['7*8*1'],
 ['8*2*4']]

我想像这样将其转换为int,它应该计算出数字:

[[12],[56],[64]]

这是香港专业教育学院已经尝试过的:

newList= list(map(int, oldList))

该怎么做?

3 个答案:

答案 0 :(得分:2)

您可以使用

newlist = [[eval(v[0])] for v in oldlist]

或者也许更Python化

newlist = [[eval(v)] for v, *w in oldlist]

或者使用列表理解来查看给定列表中的每个子列表,将字符串从列表中取出,将其评估为整数值,然后将该列表中的整数包装到新的子列表中。 / p>

请注意,eval是危险的,应仅用于您自己的字符串。如果输入了这样的字符串,则用户可以输入可以格式化硬盘或进行其他讨厌操作的内容。

答案 1 :(得分:0)

将字符串转换为整数与计算表达式之间是有区别的。

在这里想要后者。

这可以通过eval()来实现。

l = [['3*4'],
     ['7*8*1'],
     ['8*2*4']]
out = [[eval(j) for j in i] for i in l]
#[[12], [56], [64]]

请注意,如果eval()内置函数在未经验证的用户输入上被调用(例如,他们可以进行系统调用),则可能是不安全的。

答案 2 :(得分:0)

这有点奇怪,但是您可以使用split来做到这一点:

initial_list = [['3*4'],
 ['7*8*1'],
 ['8*2*4']]

new_list = []
for mini_list in initial_list:
    multiplier = 1
    for number in mini_list[0].split('*'):
        multiplier *= int(number)
    new_list.append([multiplier])

print(new_list)

输出:

[[12], [56], [64]]