Exception handling with NameError
Peter Otten
__peter__ at web.de
Sat Nov 6 11:32:24 CET 2010
Zeynel wrote:
> On Nov 5, 1:26 pm, Peter Otten <__pete... at web.de> wrote:
>
>> Of course I'm only guessing because you don't provide enough context.
>>
>> Peter
>
> Thanks.
>
> This is the problem I am having, in general:
>
> K = [] # a container list
> K = ["A", "B"]
>
> ARCHIVE = [] # a list where items from K is archived
>
> ARCHIVE.append(K)
>
> # K is updated
> K = ["C", "D"]
>
> # append new K to ARCHIVE
> ARCHIVE.append(K)
>
> The problem I am having is this: If I do:
>
> K = []
> ARCHIVE = []
> ARCHIVE.append(K)
>
> any time K is updated (user submits new input) the content of ARCHIVE
> is erased:
>
> If I do this:
>
> K = []
> ARCHIVE.append(K)
>
> I get NameError: "Name ARCHIVE not defined"
>
> What is the solution?
archive = []
k = ["a", "b"]
for new_k in get_container():
archive.append(k)
k = new_k
I. e. don't rebind the name archive if you don't want to lose old data.
>>> import random, string
>>> def get_container():
... for i in range(5):
... yield [random.choice(string.ascii_lowercase) for _ in
range(2)]
...
>>> archive = []
>>> k = ["a", "b"]
>>> for new_k in get_container():
... archive.append(k)
... k = new_k
... print "k is now", k
... print "archive contents", archive
...
k is now ['h', 'r']
archive contents [['a', 'b']]
k is now ['t', 'y']
archive contents [['a', 'b'], ['h', 'r']]
k is now ['y', 'q']
archive contents [['a', 'b'], ['h', 'r'], ['t', 'y']]
k is now ['p', 'i']
archive contents [['a', 'b'], ['h', 'r'], ['t', 'y'], ['y', 'q']]
k is now ['y', 'n']
archive contents [['a', 'b'], ['h', 'r'], ['t', 'y'], ['y', 'q'], ['p',
'i']]
Peter
More information about the Python-list
mailing list