0

Pythonのnamedtupleは不変であり、その属性の値を直接再割り当てできないことを理解しています

N = namedtuple("N",['ind','set','v'])
def solve()
    items=[]
    R = set(range(0,8))
    for i in range(0,8):
        items.append(N(i,R,8))  
    items[0].set.remove(1)
    items[0].v+=1

ここでは、属性 'v'に新しい値を割り当てている最後のように機能しません。ただし、items[0]の set 属性から要素 ' 1' を削除すると機能します。

設定された属性がリスト型の場合、これはなぜですか。

4

2 に答える 2

0

タプルではなく、セットを変更します。そして、セットは変更可能です。

>>> s = set()
>>> t = (s,)
>>> l = [s]
>>> d = {42: s}
>>> t
(set([]),)
>>> l
[set([])]
>>> d
{42: set([])}
>>> s.add('foo')
>>> t
(set(['foo']),)
>>> l
[set(['foo'])]
>>> d
{42: set(['foo'])}
于 2014-03-22T08:29:52.603 に答える