我正在尝试编写一些代码,如果发生某种情况,特定的数字必须更改为 - 该数字。 到目前为止,我有以下代码:
x=6
for words in foo:
if "bar" in words:
crazy_function(x)
else:
pass
如果单词“bar”在单词中,则x将需要为-6,如果不是单词,则需要以+6表示。 在某些情况下,x = -6,在这种情况下,如果bar是单词,则需要变为正数。 我需要用实际工作的东西替换“crazy_function()”。
答案 0 :(得分:13)
使用否定运算符:
x=6
for words in foo:
if "bar" in words:
x = -x;
答案 1 :(得分:6)
“疯狂的功能”实现起来很简单:
def crazy_function(x):
return -x
像这样使用:
if "bar" in words:
x = crazy_function(x)
或者简单地说明:
if "bar" in words:
x = -x
要使它更短,正如@kroolik指出的那样:
x = -x if "bar" in words else x
答案 2 :(得分:4)
标准库中已有一个功能:neg
。
在这样的情况下,你只需要一个表达式并且没有充分的理由它必须是一个函数,使用neg
是愚蠢的。比较:
if "bar" in words:
x = operator.neg(x)
if "bar" in words:
x = -x
第二个显然更具可读性,也更短。
但是,有些情况下您确实需要一个功能。在这种情况下,neg
比动态创建函数更好。比较:
foo = map(operator.neg, bar)
foo = map(lambda x: -x, bar)
(当然在这种情况下,您可以只编写foo = (-x for x in bar)
...但并非每个高阶函数都映射到理解子句。)
答案 3 :(得分:1)
嗯,总是旧的待机,乘法。
x *= -1
答案 4 :(得分:0)
将数字乘以-1?这似乎是最简单的方法。
答案 5 :(得分:0)
x = x*([-1 for words in foo if 'bar' in words]+[1])[0]