Как насчет двух списков, каждый из которых содержит ключи той же коллекции, скажем, словарь?
Например:
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]]
ideone example
Или с помощью класса-оболочки:
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])
ideone example
Наконец, или с помощью встроенных списков:
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]
ideone example
Обратите внимание, что первый пример относится к всем вашим членам ListX как «ссылка», а последние два примера трактует член, как «ценность», если вы сделаете их SharedInt()
с или вложить их в список соответственно.
Другими словами,
LISTA[1] = 21 # First example
ListA[1] = 11 # Second, third examples
да с mutables, ни с immutables – tacaswell
насчет двух списков, каждый из которых содержит ключи той же коллекции, скажем, словарь? – jedwards
tcaswell, не могли бы вы уточнить. Какой будет синтаксис? Есть ли изменяемая/неизменная команда? –