两个列表怎么样,每个列表都包含同一个集合的键,比如字典?
例如:
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 # 第二、第三个例子