嗨,我坚持使用元组类型的更改值。我知道我不能改变元组类型的值,但有没有办法改变它???
a=[('z',1),('x',2),('r',4)]
for i in range(len(a)):
a[i][1]=(a[i][1])/7 # i wanna do something like this !!!
我想将a中的数字改为概率,例如:1 / 7,2 / 7,4 / 7 有没有办法改变一个浮点数?例如
a=[('z',0.143),('x',0.285),('r',0.571)]
答案 0 :(得分:4)
最简单的可能就是将元组变成列表:
a=[['z',1], ['x',2], ['r',4]]
与元组不同,列表是可变的,因此您将能够更改单个元素。
答案 1 :(得分:2)
要更改为float
,这很容易做到
from __future__ import division # unnecessary on Py 3
一个选项:
>>> a=[('z',1),('x',2),('r',4)]
>>> a = [list(t) for t in a]
>>> for i in range(len(a)):
a[i][1]=(a[i][1])/7
>>> a
[['z', 0.14285714285714285], ['x', 0.2857142857142857], ['r', 0.5714285714285714]]
可能是最好的方式:
>>> a=[('z',1),('x',2),('r',4)]
>>> a[:] = [(x, y/7) for x, y in a]
>>> a
[('z', 0.14285714285714285), ('x', 0.2857142857142857), ('r', 0.5714285714285714)]
根据评论中的要求,“存储而不是打印”的小数点后3位
>>> import decimal
>>> decimal.getcontext().prec = 3
>>> [(x, decimal.Decimal(y) / 7) for x, y in a]
[('z', Decimal('0.143')), ('x', Decimal('0.286')), ('r', Decimal('0.571'))]