Re: A question about readability
On Dec 10, 3:03 pm, Jean-Michel Pichavant wrote: > - Original Message - > > On Dec 7, 6:46 pm, Marco wrote: > > > Hi all, do you think this code: > > > > $ more myscript.py > > > for line in open('data.txt'): > > > result = sum(int(data) for data in line.split(';')) > > > print(result) > > > > that sums the elements of the lines of this file: > > > > $ more data.txt > > > 30;44;99;88 > > > 11;17;16;50 > > > 33;91;77;15 > > > $ python3.3 myscript.py > > > 261 > > > 94 > > > 216 > > > > is explicit enough? Do you prefer a clearer solution? > > > Thanks in advance, Marco > > > -- > > > Marco > > > Interpreting your question as a general question of stylistics, my > > experience is that a 3 line script often becomes a 10 line or a 50 > > line script at which point the direct printing will have to be > > modified to create an internal data structure. > > > So on the whole I find it expedient to start with that assumption and > > write it as: > > > def linesums(file): > > return [sum(int(i) for i in l.split(';')) for l in open(file, 'r')] > > Why change the OP's namings ? 'data' and 'line' were more suitable than 'i' > and 'l'. Of course we're nitpicking, no one will get hurt. > > JM Yes, l is an undesirable name because it can look like 1 -- http://mail.python.org/mailman/listinfo/python-list
Re: A question about readability
- Original Message - > On Dec 7, 6:46 pm, Marco wrote: > > Hi all, do you think this code: > > > > $ more myscript.py > > for line in open('data.txt'): > > result = sum(int(data) for data in line.split(';')) > > print(result) > > > > that sums the elements of the lines of this file: > > > > $ more data.txt > > 30;44;99;88 > > 11;17;16;50 > > 33;91;77;15 > > $ python3.3 myscript.py > > 261 > > 94 > > 216 > > > > is explicit enough? Do you prefer a clearer solution? > > Thanks in advance, Marco > > -- > > Marco > > Interpreting your question as a general question of stylistics, my > experience is that a 3 line script often becomes a 10 line or a 50 > line script at which point the direct printing will have to be > modified to create an internal data structure. > > So on the whole I find it expedient to start with that assumption and > write it as: > > def linesums(file): > return [sum(int(i) for i in l.split(';')) for l in open(file, 'r')] Why change the OP's namings ? 'data' and 'line' were more suitable than 'i' and 'l'. Of course we're nitpicking, no one will get hurt. JM -- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. -- http://mail.python.org/mailman/listinfo/python-list
Re: A question about readability
On Dec 7, 6:46 pm, Marco wrote: > Hi all, do you think this code: > > $ more myscript.py > for line in open('data.txt'): > result = sum(int(data) for data in line.split(';')) > print(result) > > that sums the elements of the lines of this file: > > $ more data.txt > 30;44;99;88 > 11;17;16;50 > 33;91;77;15 > $ python3.3 myscript.py > 261 > 94 > 216 > > is explicit enough? Do you prefer a clearer solution? > Thanks in advance, Marco > -- > Marco Interpreting your question as a general question of stylistics, my experience is that a 3 line script often becomes a 10 line or a 50 line script at which point the direct printing will have to be modified to create an internal data structure. So on the whole I find it expedient to start with that assumption and write it as: def linesums(file): return [sum(int(i) for i in l.split(';')) for l in open(file, 'r')] Whether this one-liner is readable or not and how to make it more so etc is probably bikeshedding. More important questions are for example: - Should you protect the open with a try - When to list and when to generate(or) All these are nice features of python but can lead to over-engineered code -- http://mail.python.org/mailman/listinfo/python-list
Re: A question about readability
On Fri, 07 Dec 2012 14:46:03 +0100, Marco wrote: > Hi all, do you think this code: > > $ more myscript.py > for line in open('data.txt'): > result = sum(int(data) for data in line.split(';')) > print(result) [...] > is explicit enough? Do you prefer a clearer solution? Thanks in advance, It's perfectly fine for such a simple script. It is readable and explicit. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: A question about readability
In article , Marco wrote: > Hi all, do you think this code: > > $ more myscript.py > for line in open('data.txt'): > result = sum(int(data) for data in line.split(';')) > print(result) That sum() line is a bit of a mouthful. I would refactor it into something like this: > for line in open('data.txt'): > fields = line.split(';') > print sum(int(i) for i in fields) It's the same number of lines, but I think it's easier to read. BTW, are you using Python 2 or 3? It helps when asking these kinds of questions to let people know. I assumed 2 in my answer above. -- http://mail.python.org/mailman/listinfo/python-list
A question about readability
Hi all, do you think this code: $ more myscript.py for line in open('data.txt'): result = sum(int(data) for data in line.split(';')) print(result) that sums the elements of the lines of this file: $ more data.txt 30;44;99;88 11;17;16;50 33;91;77;15 $ python3.3 myscript.py 261 94 216 is explicit enough? Do you prefer a clearer solution? Thanks in advance, Marco -- Marco -- http://mail.python.org/mailman/listinfo/python-list