【问题标题】:Change a positive number in to a negative number in a function [closed]在函数中将正数更改为负数[关闭]
【发布时间】:2016-08-23 18:52:33
【问题描述】:

我一直在互联网上寻找我的问题,但似乎找不到任何帮助。

问题是您应该有一个随机的数字列表,然后返回该列表,但是,给定的数字在返回时应该是负数而不是正数。到目前为止,这是我想出的:

def change_sign(list,n):
    if n in list1:
        return list1  #Don't know what to put here
    elif n not in list1:
        print("The number is not in the list")

因此,如果给定的数字 (n) 在列表中,它应该返回相同的列表,但 n 为负数。

希望这是有道理的,如果有人能抽出时间帮助我,我将不胜感激!

【问题讨论】:

  • 你可以将一个数字乘以 -1 为负数:n * -1
  • @Hamms 你不需要乘法来否定一个数字;你只需要减号:-n
  • 拥有一个名为 list 的参数是个坏主意。它掩盖了列表的内置构造函数:list()。你的意思是list1?
  • 如果数字已经是负数怎么办?负数应该返回正数还是负数?

标签: python function python-3.x return


【解决方案1】:

你可以这样做:

def change_sign(list1,n):
    if n in list1:
        return [-i if i==n else i for i in list1]
    elif n not in list1:
        print("The number is not in the list")

这能回答你的问题吗?

列表推导非常强大!玩得开心!

【讨论】:

    【解决方案2】:

    您可以使用list comprehensions 或map 返回一个新列表

    n = 5
    old_list = [0, 4, 3, -2, 5, -5, 6]
    new_list = [-i if i == n else i for i in old_list]
    # OR
    new_list = map(lambda i: -i if i == n else i, old_list)
    

    或者如果你绝对需要它的函数形式:

    def func(old_list, n):
        return [-i if i == n else i for i in old_list]
    

    请注意,这些都期望n 是一个正数。如果你想让它处理正数和负数(负数将返回一个基本不变的列表)

    def func(old_list, n):
        if n <= 0:
            return old_list[:]
        return [-i if i == n else i for i in old_list]
    

    【讨论】:

      【解决方案3】:

      您需要遍历列表,并将每个项目与您给定的数字进行比较。

      def change_sign(list, n):
          new_list = []
          for value in list:
              if value == n:
                  value = -value
              new_list.append(value)
      
          return new_list
      

      您可以使用列表推导来清理它:

      def change_sign(list, n):
          return [value if value != n else -value for value in list]
      

      如果您不理解这一点,请不要担心,稍后的练习中会介绍。

      【讨论】:

        【解决方案4】:

        如果我们返回一个新列表,这将为您完成(也不要使用单词列表作为变量,它是一个保留字!):

        def change_sign(numbers_list,invert_this_number):
            inverted_numbers_list = []
            for number in numbers_list:
                if number == invert_this_number:
                    inverted_numbers_list.append(number * -1)
                else:
                    inverted_numbers_list.append(number)
            return inverted_numbers_list
        
        
        >>> change_sign([-1,1,3],-1)
        [1, 1, 3]
        

        您可能可以做一些花哨的运算符,例如对整数本身进行按位运算,但是这个简单的代码 sn-p 就足够了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-08-20
          • 2011-12-13
          • 1970-01-01
          • 2015-05-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多