繁体   English   中英

如何在python中用数字将列表列表中的每个元素除

[英]how to divide each element in a list of lists by a number in python

我有一个列表'q'的列表,我想将q中的每个数字除以每个列表中的总和(= 10),我尝试这样做:

q = [[0,0,0,10],[1,2,6,1]]
B=[]
for x in q:
    y = [z/sum(x[:len(x)]) for z in x]
    B.append(y)   
print B

它没有给我预期的结果

有人知道这是怎么回事吗?

正如其他人指出的那样,您的程序将使用整数除法,这似乎并不是您想要的。 但是,我建议不要将正确的解决方案是将from ___future__ import division添加到脚本顶部(实际上,您为Python 3之前的Python版本编写的每个脚本)也应添加from ___future__ import division而不是将值之一明确转换为浮点数。 )。 这会将除法切换为返回浮点值,从而消除了许多细微的数学错误。 对于确实需要整数除法的情况,可以使用双斜杠//

B = []
for x in q:
   theSum = sum(x)
   y = [float(xi) / theSum for xi in x]
   B.append(y)
print B

您正在执行整数除法,因为两个操作数都是整数。

y = [float(z)/sum(x) for z in x]

您正在使用整数除法,它将结果四舍五入为零。 将其中一个操作数转换为float以获取浮点除法。 要就地转换数组,您可以

for row in q:
    s = float(sum(row))
    row[:] = [x / s for x in row]
$ python
>>> q = [[0,0,0,10],[1,2,6,1]]
>>> B = [[float(j)/sum(i) for j in i] for i in q]
>>> B
[[0.0, 0.0, 0.0, 1.0], [0.1, 0.2, 0.6, 0.1]]

注意:python3 ,不需要float()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM