[英]How to modify each element of a tuple in a list of tuples
我有一個元組列表:
my_list =
[(0.12497007846832275, 0.37186527252197266, 0.9681450128555298, 0.5542989373207092),
(0.18757864832878113, 0.6171307563781738, 0.8482183218002319, 0.8088157176971436),
(0.06923380494117737, 0.2164008915424347, 0.991775393486023, 0.41364166140556335)]
我想將每個值乘以 100,然后以相同的順序重新分配它們。 但是在下面做,它會拋出錯誤:
for i in range(len(my_list)):
for j in range(4):
my_list[i][j] = 100 * my_list[i][j]
TypeError: 'tuple' object does not support item assignment
如何修改這些值並將它們保存在它們的位置?
如果您閱讀文檔,您將了解到元組是不可變的(與列表不同),因此您無法更改元組的值。
使用列表理解:
my_list = [(0.12497007846832275, 0.37186527252197266, 0.9681450128555298, 0.5542989373207092),
(0.18757864832878113, 0.6171307563781738, 0.8482183218002319, 0.8088157176971436),
(0.06923380494117737, 0.2164008915424347, 0.991775393486023, 0.41364166140556335)]
my_list = [tuple(y * 100 for y in x ) for x in my_list]
# [(12.497007846832275, 37.186527252197266, 96.814501285552979, 55.429893732070923),
# (18.757864832878113, 61.713075637817383, 84.821832180023193, 80.881571769714355),
# (6.9233804941177368, 21.640089154243469, 99.177539348602295, 41.364166140556335)]
您不能將值重新分配給元組,因為它們是不可變的。 嘗試創建一個新的元組列表:
my_list = [(0.12497007846832275, 0.37186527252197266, 0.9681450128555298, 0.5542989373207092),
(0.18757864832878113, 0.6171307563781738, 0.8482183218002319, 0.8088157176971436),
(0.06923380494117737, 0.2164008915424347, 0.991775393486023, 0.41364166140556335)]
my_list = [tuple(map(lambda x: x*100, item)) for item in my_list]
元組是不可變的。 元組列表不是您要執行的操作的最佳結構。 如果您可以使用 3rd 方庫,我推薦 NumPy:
import numpy as np
A = np.array(my_list)
A *= 100
print(A)
array([[ 12.49700785, 37.18652725, 96.81450129, 55.42989373],
[ 18.75786483, 61.71307564, 84.82183218, 80.88157177],
[ 6.92338049, 21.64008915, 99.17753935, 41.36416614]])
另一種方法是列表理解,它不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.