0

我试图基本上创建引用来绘制多个关系并将它们存储在列表或可能的字典中。

基本上:

variable1 = 10

//在这种情况下,'ref'表示变量应该是一个引用)
listA = [variable1(ref), variable2, variable3]
listB = [variable1(ref), variable4, variable5]

for i in listA:
i = i + 10

for i in listB:
i = i + 10

print listA[0]
//应该打印30

print listB[0]
//应该打印30

如何将对同一变量的两个引用拆分为两个单独的列表?

4

1 回答 1

1

两个列表怎么样,每个列表都包含同一个集合的键,比如字典?

例如:

MASTER = [10,11,12,13,14]

LISTA = [0,1,2]
LISTB = [0,3,4]

for i in LISTA: MASTER[i] += 10
for i in LISTB: MASTER[i] += 10

print MASTER[LISTA[0]]

print MASTER[LISTB[0]]

理想的例子

或者使用包装类:

class SharedInt:
    val = None
    def __init__(self, v): self.val = v

    def __add__(self, a): 
        self.val += a
        return self.val

    def __int__(self): return self.val

v1 = SharedInt(10)

listA = [v1, 11, 12]
listB = [v1, 13, 14]

for i in listA: i += 10
for i in listB: i += 10

print int(listA[0])
print int(listB[0])

理想的例子

最后,或使用嵌入式列表:

v1 = [10]

listA = [v1, 11, 12]
listB = [v1, 13, 14]

for i in listA: 
    if isinstance(i, list): i[0] += 10 
    else: i += 10
for i in listB: 
    if isinstance(i, list): i[0] += 10 
    else: i += 10

print listA[0]
print listB[0]

理想的例子

请注意,第一个示例将所有ListX 成员视为“引用”,而最后两个示例将成员视为“值”,除非您分别将它们设为SharedInt()或将它们包含在列表中。

换句话说,

LISTA[1] = 21 # 第一个例子
ListA[1] = 11 # 第二、第三个例子
于 2013-09-21T21:33:18.787 回答