Just spend the extra two characters to do this with existing syntax: w('field1 field2 field3'). Implementation of the w() function is trivial. On Nov 12, 2016 9:04 AM, "Gary Godfrey" <g.pythonideas@wamp.us> wrote:
Hi,
I looked around for a while but didn't see this proposed anywhere. I apologize if I missed an existing discussion.
I do a fair amount of work with pandas and data munging. This means that I'm often doing things like:
mydf = df[ ['field1', 'field2', 'field3' ] ]
This is a little ugly, so if the list is long enough, I do:
mydf=df[ 'field1 field2 field3'.split() ]
This is a little more readable, but still a bit ugly. What I'm proposing here is:
mydf = df[ w'field1 field2 field3' ]
This would be identical in all ways (compile-time) to:
mydf = df[ ('field1', 'field2', 'field3') ]
This should work with all the python quote variations (w''', w""", etc). The only internal escapes are \\ indicating a \ and <backslash><space> indicating a non-splitting space:
songs = w'My\ Bloody\ Valentine Blue\ Suede\ Shoes'
One question is whether to have w'' be a list or a tuple. I leaned slightly towards tuple because it's faster on internal loops:
In [1]: %timeit a=('this','is','a','test') 100000000 loops, best of 3: 11.3 ns per loop
In [2]: %timeit a=['this','is','a','test'] 10000000 loops, best of 3: 74.3 ns per loop
However, I mostly see lists used in the data science community, so it's a little less convenient:
other_fields = df.columns[-3:] new_columns = w'field1 field2' + other_fields # ERROR - can't concatenate list to tuple new_columns = list(w'field1 field2') + other_fields
I honestly could go either way with lists or tuples.
Other Languages:
perl has the qw operator:
@a = qw(field1 field2 field3);
ruby has %w
a=%w{field1 field2}
Thanks for reading this far :-)
Regards, Gary Godfrey Austin, TX
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/