我有一个元组列表,如下所示:
my_list = [(["$"], 1.5)]
我还将这些贵重物品存储为变量:
val1 = "#"
val2 = 3.0
我希望能够将val1附加到元组中的列表中,并将val2与元组中的第二个元素相乘。它应该是这样的:
[(["$", "#"], 4.5)]
到目前为止,我有这个:
for item in my_list:
for i in item:
i[0].append(val1)
i[1] = i[1] * val2
但到目前为止,这是行不通的,还有另一种方法吗?
答案 0 :(得分:7)
元组是不可变的。因此,您必须创建一个新的:
for i, item in enumerate(my_list):
item[0].append("#")
my_list[i] = item[0], item[1] * 3
答案 1 :(得分:1)
既然您必须创建新元组,为什么不在创建新列表时创建新列表呢?这将允许一个简单的列表理解:
>>> my_list = [(["$"], 1.5), (["@"], 2.5)]
>>> val1 = "#"
>>> val2 = 3.0
>>> new_list = [(x+[val1],y*val2) for x,y in my_list]
>>> new_list
[(['$', '#'], 4.5), (['@', '#'], 7.5)]