这是在Python中练习高尔夫优化的挑战-可重复使用的技巧和捷径以剃除一些角色。许多人会熟悉Python高尔夫球手,并使用Python技巧中的常见想法。其中一些使用了Python特有的功能,除非您已经看过它们,否则可能不知道它们存在,因此,如果遇到问题,请仔细阅读提示。
目标: 有十个问题,每个问题都是供您优化的Python代码参考片段,并提供了代码描述。您的目标是将其重写为更短,但仍在功能上等效。
您试图最小化的分数是所有代码段的总代码长度。参考片段的长度为150。抢先注是最早的帖子。
发布答案:对于每个问题,请发布您的代码及其字符数。如果找不到更短的内容,则可以发布参考代码段。目的是在发布您的答案时不要看别人的答案。请扰乱标记每个单独的问题,包括单独的字符数。您可以显示总数。现在就可以随意破坏您的解决方案或发布新的,没有伪造的解决方案。
有关合法性的详细信息:功能对等意味着可以在不影响其行为的情况下将其替换为程序中的代码(忽略内存使用和运算符优先级之类的表达式)。表达式应产生与等效的值==
。注意1.0==1==True
。除非另有说明,否则您的代码不应有任何副作用。我不希望这些问题是特定于版本的,但以防万一,您可以为每个问题指定一个Python版本。
问题1:只要列表L
中至少包含7个元素,就可以进行迭代
# 16 chars
while len(L)>=7:
问题2:检查两个浮点x
和y
两者是否均为正。
# 11 chars
x>0 and y>0
问题3:如果布尔b
值为true,则删除的第一个元素L
。否则,请保持不变。
# 12 chars
if b:L=L[1:]
问题4:检查非空L
数字列表中的所有元素是否相等。对于此问题,可以修改列表。
# 22 chars
all(x==L[0]for x in L)
问题5:仅当一个数字已经包含该数字时,才将其添加n
到列表末尾。L
L
# 16 chars
if n in L:L+=[n]
问题6:表示浮点数的符号x
:+1
为正,0
为0,-1
为负。
# 20 chars
abs(x)/x if x else 0
问题7只要L
Boolean列表的第一个元素是,就继续循环True
。如果L
为空,也停止。
# 17 chars
while L and L[0]:
问题8:只要n
大于1 ,就继续循环。该数字n
保证为正整数。
# 10 chars
while n>1:
问题9:检查以字符串表示的整数s
是否为负(即以“-”开头)。
# 9 chars
s[0]=='-'
问题10:使用-> 和-> 将布尔值转换b
为"Win"
/ 。"Lose"
True
"Win"
False
"Lose"
# 17 chars
["Lose","Win"][b]
警告:下面的扰流板,如果您想自己解决这些问题,请不要向下滚动。
如果您只想知道问题的最佳分数:
问题一:
12
问题2:
5
问题三:
7
问题4:
13
问题5:
13
问题6:
8
问题7:
12
问题8:
9
问题9:
5
问题10:
15