However, I didn't actually answer your question.
As Kent has already mentioned, eval is quite dangerous in python and to
be avoided when possible. I think it would be safer to do something
like this:
l = locals()
for x, y in zip( varlist, data ):
l[x] = y
or, more tersely:
[ locals()[x] = y for x, y in zip( varlist, data ) ]
This will accomplish what you're trying to do, but a dict really gives
you greater functionality than assigning to local variables.
Python is *not* Matlab. Functions that have the same name are not
necessarily equivalent. Plus, you should start to "think in Python"
rather than "thinking in Matlab" and transliterating.
Eric Brunson wrote:
> A good python coder would probably not choose to pollute his name space
> like that. My choice would be to assign the elements of "data" to a
> dictionary indexed by the strings in varlist like this:
>
> vardict = dict( zip( varlist, data ) )
>
> and reference "var1" as:
>
> vardict['var1']
>
> Happy Deer wrote:
>
>> Dear all-
>>
>> I wonder whether there is a way in Python which can do what "eval" in
>> Matlab does.
>> Say, varlist is a 1 by k tuple/list, which contains strings for
>> variable names.
>> For example, varlist=['var1','var2',...'vark']
>> data is a n by k matrix.
>> I want to assign each column in data to each variable in varlist and
>> get var1=data[:,1]... vark=data[:,k]
>>
>> Anyone knows how to do this?
>>
>> Fangwen
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Tutor maillist - [email protected]
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>
>
> _______________________________________________
> Tutor maillist - [email protected]
> http://mail.python.org/mailman/listinfo/tutor
>
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor