我有以下列表:
[['3*4'],
['7*8*1'],
['8*2*4']]
我想像这样将其转换为int,它应该计算出数字:
[[12],[56],[64]]
这是香港专业教育学院已经尝试过的:
newList= list(map(int, oldList))
该怎么做?
答案 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]]