将整数转换为负数

时间:2013-07-17 21:57:54

标签: python

我正在尝试编写一些代码,如果发生某种情况,特定的数字必须更改为 - 该数字。 到目前为止,我有以下代码:

x=6

for words in foo:
   if "bar" in words:
      crazy_function(x)
   else:
      pass

如果单词“bar”在单词中,则x将需要为-6,如果不是单词,则需要以+6表示。 在某些情况下,x = -6,在这种情况下,如果bar是单词,则需要变为正数。 我需要用实际工作的东西替换“crazy_function()”。

6 个答案:

答案 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]