String processing inside lists
hnowak at cuci.nl
Mon Feb 28 23:28:59 CET 2000
On 28 Feb 00, at 21:58, Gary Moore wrote:
> After diligently and successfully going through 'Programming Python' I
> decided that a good first project would be to take my DVD collection (228
> Discs) and build three different files (a tab delimited file for import
> into a database, an xml file for each movie, and a text file for each
> movie). I decided to gather the information from the Internet movie
> database .list files and then process and sort the output in python.
> The problem happened when I tried to use the construct:
> for x in actors
> to process the list of actors prior to output.
> When I use the string library to process this list, I want the actual
> strings contained in the list to change. What I found was that no matter
> how I tried to change the strings in the actors list, I was unsuccessful.
> temp = replace(x,'\012','')
> x = temp
> When I print x, I get the line with the text replaced. However, when I
> view the line in the original array actors, the changes were not made.
True; this construct loops over the actors list, feeding each element to x.
However, x is, shall we say, "stand-alone"; it has no direct relation with
the original list. Thus,
for x in actors:
x = 'blah'
will *not* change all elements of the list to 'blah'.
> The only way I could overcome this problem was to change the for statement
> for x in range(len(actors))
> and then subscript the actors list to obtain the results e.g.
> temp = replace(actors[x],'\012','')
> actors[x] = temp
This construct changes the elements of the list. You loop over an index,
like you would in, for instance, C.
> My concern is that I must not be understanding some basic concept
> concerning the FOR loop in Python. I reread the material in 'Learning
> Python', but still could not understand why the first solution above did
> not work.
The x in 'for x in actors' can be seen as a "read-only" value. You can
change it, but it won't affect the list, as you have found out.
> I fnally completed a working prototype and successfully carried out the
> conversion of all of the information. It was amazingly fast, and I was
> very impressed with the power available with a minimum of effort (1 day).
> If anyone could clarify the situation above, I would appreciate it.
--Hans Nowak (zephyrfalcon at hvision.nl)
You call me a masterless man. You are wrong. I am my own master.
More information about the Python-list