Question

I'm trying to basically create references to plot multiple relationships and store them in a list or possibly a dictionary.

Basically:

variable1 = 10

//in this case, 'ref' denotes that the variable should be a reference)
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]
//Should print 30

print listB[0]
//Should print 30

How can I split two references to the same variable into two separate lists?

Was it helpful?

Solution

What about two lists, each containing keys of the same collection, say dictionary?

For example:

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

Or using a wrapper class:

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

Lastly, or using embedded lists:

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

Note that the first example treats all of your ListX members as "references" while the last two examples treats the members as "values", unless you make them SharedInt()s or enclose them in a list respectively.

In other words,

LISTA[1] = 21 # First example
ListA[1] = 11 # Second, third examples
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top