在列表列表中,将每个第二个元素除以每个第三个元素,python

时间:2020-09-16 21:34:46

标签: python list

在类似列表中

[['Austria', 200, 50], ['Australia', 50, 10]]

如何将第二个元素除以每个第三个元素,并得到类似的结果

[['Austria', 4], ['Australia', 5]]

到目前为止,我的解决方法

element0 = [[line[0],] for line  in  mylist]
element1 = [[float(line[1]),] for line  in  mylist]
element2 = [[float(line[2]),] for line  in  mylist]
division_np = np.array(element1)/np.array(element2)
division_np = division_np.tolist()
mergelists = list(zip(element0, division_np))
mergelists

但是对于这样一个简单的任务,这看起来太多了。

2 个答案:

答案 0 :(得分:3)

您不需要为此导入numpy;一个简单的列表理解就可以了:

[ [country, numer/denom] for (country, numer, denom) in mylist]

输出:

[['Austria', 4.0], ['Australia', 5.0]]

如果您知道有/需要整数,只需将第二个值设为numer//denom

答案 1 :(得分:0)

您可以先将整个列表转换为numpy数组,然后按如下所示将结果压缩到一行中

result = list(map(list,zip(arr[:,0], arr[:,1].astype(float)/arr[:,2].astype(float))))

如果您想要整数结果,请将float替换为int。