[英]Add value to a tuple of list and int in Python3
我在想如果我有一個int和list元組:
(5,[2,3])
第一個元素id代表列表的總和。
我可以在列表中附加一個值並同時更新總和嗎? 結果應如下所示:
(10,[2,3,5])
謝謝你的幫助。
不,您不能,因為元組是不可變的,因此不能修改總和。 您將必須創建一個新的元組。
>>> t = (5,[2,3])
>>> val = 5
>>> t_new = t[0] + val, t[1] + [val]
>>> t_new
(10, [2, 3, 5])
但是,您可能首先要考慮使用可變數據結構。
您可以這樣做:
def addTup(tup, x):
return (tup[0]+x, tup[1]+[x])
a = (5,[2,3])
addTup(a, 22)
您必須創建一個主要由舊元組的值組成的新元組。 此代碼會將新項目添加到您的列表中,並將同時更新總和值。 您不能簡單地自行修改元組,因為元組在python中是不變的,如您在此處所見。
由於元組是不可變的,因此您必須創建一個全新的元組:
_, b = (5,[2,3])
final_results = (sum(b+[5]), b+[5])
輸出:
(10, [2, 3, 5])
這只是@FlashTek的答案的花哨版本。 真正的問題是,如果這些值不是不可變的,是否有將它們保存在tuple
的目的。
from collections import namedtuple
def add_value(n, x):
return n._replace(arrsum=n.arrsum+x, arr=n.arr+[x])
SumArray = namedtuple('SumArray', ['arrsum', 'arr'])
s = SumArray(5, [2, 3])
t = add_value(s, 10)
# SumArray(arrsum=15, arr=[2, 3, 10])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.