簡體   English   中英

Python-'tuple'對象不支持項目分配

[英]Python - 'tuple' object does not support item assignment

嗨,我被卡在元組類型的更改值上。 我知道我不能更改元組類型的值,但是有一種方法可以更改它?

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的數字更改為浮點數? 例如

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

最簡單的方法可能是將元組變成列表:

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

與元組不同,列表是可變的,因此您可以更改單個元素。

要更改為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'))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM