在我的Python程序的某些部分,我有一个val变量,可以是1或0.如果它是1,我必须更改为0,如果它是0,我必须更改为1.
你是如何以Pythonic的方式做到的?
if val == 1:
val = 0
elif val == 0:
val = 1
Run Code Online (Sandbox Code Playgroud)
它太长了!
我做了:
swap = {0: 1, 1:0}
Run Code Online (Sandbox Code Playgroud)
所以我可以用它:
swap[val]
Run Code Online (Sandbox Code Playgroud)
其他想法?
CB *_*ley 139
这不是pythonic,但它是语言中立的.通常val = 1 - val
是最简单的.
YOU*_*YOU 24
从True == 1
和False == 0
在python中,
你可以使用 var = not var
它会交换它.
小智 17
最短的方法是使用按位运算符XOR.
如果您想val
重新分配:
val ^= 1
Run Code Online (Sandbox Code Playgroud)
如果您不想val
重新分配:
val ^ 1
Run Code Online (Sandbox Code Playgroud)
Geo*_*lly 10
另一种可能性:
i = (1,0)[i]
Run Code Online (Sandbox Code Playgroud)
只要我是肯定的,这很有效,正如dbr在评论中指出的那样,对于i <0,它不起作用.
你确定你不想使用False
和True
吗?听起来几乎像它.
在你的情况下,我推荐三元:
val = 0 if val else 1
Run Code Online (Sandbox Code Playgroud)
如果您有2个变量要交换,您可以说:
(a, b) = (b, a)
Run Code Online (Sandbox Code Playgroud)
小智 6
我已经交换了列表中的 0 和 1。
这是我的清单:
list1 = [1,0,0,1,0]
list1 = [i^1 for i in list1]
#xor each element is the list
print(list1)
Run Code Online (Sandbox Code Playgroud)
所以结果是:[0,1,1,0,1]
int(not(val))
Run Code Online (Sandbox Code Playgroud)
例子:
>>> val = 0
>>> int(not(val))
1
>>> val = 1
>>> int(not(val))
0
Run Code Online (Sandbox Code Playgroud)
请注意,此答案仅是描述性的,而不是规定性的。
归档时间: |
|
查看次数: |
34502 次 |
最近记录: |