Confused About A Variable Assignment (python)
Solution 1:
seq = chain creates another reference to the same chain list. You then print that list, but the loop doesn't stop.
You continue to expand chain, and since seq is just a reference to that list, you'll see those changes once the loop has ended. During the remaining for loop iterations chain / seq continues to change, but the if condition is no longer met so you don't see these changes take place.
You continue to expand chain here:
chain += [primes[secnum]]
This uses augmented assignment; it doesn't create a new list but extends the existing list. It is equivalent to chain.extend(primes[secnum]).
You can fix this by creating a copy of chain to store in seq:
seq = chain[:]
Solution 2:
In python you can use + operator to join two lists together. So [1] + [2] will yield [1,2]
chain += [primes[secnum]]
if len(chain) > record and sum(chain) in primes:
record = len(chain)
seq = chain
printseqchain variable is getting bigger by += operator which is joining chain ( a list ) to another list . So it will get bigger and when you print seq, because seq is equal to chain now, you get the latest result.
Post a Comment for "Confused About A Variable Assignment (python)"