2

こんにちは、タプル型の変更値に固執しています。タプル型の値を変更できないことはわかっていますが、変更する方法はありますか???

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 の数値を float に変更する方法はありますか?? 例えば

a=[('z',0.143),('x',0.285),('r',0.571)]
4

2 に答える 2

4

最も簡単なのは、おそらくタプルをリストに変換することです:

a=[['z',1], ['x',2], ['r',4]]

タプルとは異なり、リストは可変であるため、個々の要素を変更できます。

于 2013-04-24T05:52:48.837 に答える
2

変更するfloatのは簡単です

from __future__ import division # unnecessary on Py 3

1 つのオプション:

>>> 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'))]
于 2013-04-24T05:53:40.250 に答える