簡體   English   中英

在Python3中將值添加到list和int的元組

[英]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.

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