复杂的嵌套列表理解,PEP8
complex nested list comprehensions, PEP8
假设我有这样的代码:
questions = [{
"title": q.title,
"votes": q.get_total_votes(),
"options": [{
"title": o.title,
"votes": o.votes
} for o in q.get_options()]
} for q in queue.get_questions()]
但是大多数 PEP8 例子都说我应该这样写:
questions = [{"title": q.title,
"votes": q.get_total_votes(),
"options": [{"title": o.title, "votes": o.votes}
for o in q.get_options()]}
for q in queue.get_questions()]
第二个版本是否更可取/更具可读性?或者也许列表推导不是最好的方法,我应该做 plain
questions = []
for q in queue.get_questions():
options = []
for o in q.get_options():
options.append({"title": o.title, "votes": o.votes})
questions.append({"title": q.title,
"votes": q.get_total_votes(),
"options": options})
我会这样写,我认为它更具可读性:
questions = [{"title": q.title,
"votes": q.get_total_votes(),
"options": [{"title": o.title, "votes": o.votes}
for o in q.get_options()]}
for q in queue.get_questions()]
PEP8方式最好,不仅可读性强,而且以后修改也很方便。第一种方法也可读但不是很好,因为不是所有的键都排列得很好,你必须使用 Tab 键嵌套你的选项键,另外如果你使用较小的终端查看它(如果你使用 vim 或任何终端编辑器)那么它会很烦人。不过只是我的想法。
假设我有这样的代码:
questions = [{
"title": q.title,
"votes": q.get_total_votes(),
"options": [{
"title": o.title,
"votes": o.votes
} for o in q.get_options()]
} for q in queue.get_questions()]
但是大多数 PEP8 例子都说我应该这样写:
questions = [{"title": q.title,
"votes": q.get_total_votes(),
"options": [{"title": o.title, "votes": o.votes}
for o in q.get_options()]}
for q in queue.get_questions()]
第二个版本是否更可取/更具可读性?或者也许列表推导不是最好的方法,我应该做 plain
questions = []
for q in queue.get_questions():
options = []
for o in q.get_options():
options.append({"title": o.title, "votes": o.votes})
questions.append({"title": q.title,
"votes": q.get_total_votes(),
"options": options})
我会这样写,我认为它更具可读性:
questions = [{"title": q.title,
"votes": q.get_total_votes(),
"options": [{"title": o.title, "votes": o.votes}
for o in q.get_options()]}
for q in queue.get_questions()]
PEP8方式最好,不仅可读性强,而且以后修改也很方便。第一种方法也可读但不是很好,因为不是所有的键都排列得很好,你必须使用 Tab 键嵌套你的选项键,另外如果你使用较小的终端查看它(如果你使用 vim 或任何终端编辑器)那么它会很烦人。不过只是我的想法。