我正在处理一个函数,以便在一组中找到一个与给定日期最匹配的字符串。我决定用一个类似CSS选择器的评分系统来做,因为它有相同的特定概念。
其中一部分是计算出最小的分数。如果我在找一个日期(年度月日),那么最低得分是100。如果我要找一个月(只是一个月和一年),那么它是10,如果我只有一年,那么它是1:
minscore = 1
if month: minscore = 10
if day: minscore = 100我对Python非常陌生,所以我不知道所有的技巧。我怎样才能使这更多(最)的毕达通?
发布于 2013-08-12 06:19:13
您可以使用三元表达式
minscore = 100 if day else 10 if month else 1来自佩普-308(条件表达式):
有动机的用例是使用" and“和"or”实现相同效果的容易出错的尝试。
发布于 2013-08-12 06:23:01
坚持使用容易读的代码:
if day:
minscore = 100
elif month:
minscore = 10
else:
minscore = 1发布于 2013-08-12 06:23:43
稀疏胜于稠密;
minscore = 1
if month:
minscore = 10
elif day:
minscore = 100这也是在PEP 8中引用的
通常不鼓励复合语句(同一行的多个语句)。 是:
if foo == 'blah':
do_blah_thing() do_one() do_two() do_three() 而不是:
if foo == 'blah': do_blah_thing() do_one(); do_two(); do_three()我想一个条件语句(即三元表达式)可能是“大多数pythonic”的方法,但是我认为引用Python禅宗的话会更好。
https://stackoverflow.com/questions/18180624
复制相似问题