- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
一些 if
和 else
也可以重写1 和缩短2(codegolf 风格),因为 bool 值在Python 中可以充当整数。例如if a<b:return a
可以将3改写为return("",a)[a<b]
.
在这种情况下(我简化了可读性的条件),
if a<b: print(a)
可以改写为以下两种:
print(("",a)[a<b])
(print(""),print(a))[a<b]
(如果我们忽略换行符,否则可以使用 end=""
)。
我想递减一个变量 n
(整个事情都在 while 循环中,条件是 n
)当 a<b
时在一切之上都是真实的,例如。
if a<b:
print(a)
n-=1
同时使用上面的语法技巧。 在 C 中,(n/n--)-1
不仅等于0,而且n
还减1 .在 Python 中,我还没有找到执行此操作的方法。我试过的一些无效语法:
print(("",a+(n/n--)-1)[a<b])
(print(""),(print(a);n-=1))[a<b]
如何使用这个“技巧”在条件为真时递减变量(并打印 a
)?
1,2,3:这些说法并不总是正确的
最佳答案
Python 不是 C。一方面,Python 没有递减运算符,因此 print(n--)
将不起作用。另一方面,Python 中的赋值是语句,而不是表达式,因此 print(n-=1)
将不起作用。
如果你真的希望你的 print 语句有副作用,它可以调用一个函数:
def decrement():
global n
n -= 1
return n
print(decrement())
但是不要。没有人会预料到您的 print 语句会产生副作用,因此当注释掉您的 print 语句会改变程序的结果时,每个人都会感到惊讶。
编辑:我刚刚注意到这是一个代码高尔夫问题。在那种情况下,我的文体建议并不是真的有效。每个人都希望打高尔夫球的代码很奇怪。
附言。如果您的目标是将 if
语句更改为表达式,则可以使用 and
和 or
,它们会短路。例如:
a<b and (print(a), decrement())
或者使用if ... else
表达式
(print(a),decrement()) if a<b else None
关于python - 如何在 Python 中打印时递减变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41149899/
我是一名优秀的程序员,十分优秀!