如何在Python中将列表中的每个元素除以一个数字
我有一个叫做 '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
但是这样做出来的结果跟我想要的完全不一样。
有没有人知道我哪里出错了?
5 个回答
2
B = []
for x in q:
theSum = sum(x)
y = [float(xi) / theSum for xi in x]
B.append(y)
print B
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
2
你正在进行整数除法,因为这两个参与运算的数都是整数。
y = [float(z)/sum(x) for z in x]
3
$ 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()
这个函数并不是必须的。