【问题标题】:*args returns a list containing only those arguments that are even*args 返回一个列表,该列表仅包含那些偶数的参数
【发布时间】:2021-06-27 14:48:01
【问题描述】:

我正在学习 python,在练习中我需要编写一个函数,它接受任意数量的参数并返回一个列表,其中只包含那些偶数的参数。

我知道我的代码错了:(但这段代码有什么问题?)

def myfunc(*args):
    for n in args:
        if n%2 == 0:
            return list(args)
myfunc(1,2,3,4,5,6,7,8,9,10)

【问题讨论】:

  • 创建一个类似output = [] 的列表,如果n 是偶数,则将n 添加到其中:output.append(n)。然后在myfunc末尾返回output
  • 如果 any 参数是偶数,您所做的只是返回 all 参数。

标签: python python-3.x


【解决方案1】:

执行列表理解,从args 中挑选符合我们选择标准的元素:

def myfunc(*args):
    return [n for n in args if n%2 == 0]

print(myfunc(1,2,3,4,5,6,7,8,9,10))
# [2, 4, 6, 8, 10]

【讨论】:

    【解决方案2】:

    这也可能会有所帮助,但是,前面的评论看起来更高级:

    def myfunc(*args):
        lista = []
        for i in list(args):
            if not i % 2:
                lista.append(i)
        return lista
    

    【讨论】:

      【解决方案3】:

      选择偶数

      def myfunc(*args):
          abc = []
          for n in args:
              if n%2==0:
                  abc.append(n) 
          return abc
      

      【讨论】:

      • 这(几乎)与 Mahyar Khatiri 一月份的回答完全相同。如果你真的觉得你所做的一些小改动很重要,请在代码中使用 cmets 或额外的文本来解释它们。
      【解决方案4】:
      def myfunc(*args):
          mylist = []
          for x in list(args):
              if x % 2 == 0:
                  mylist.remove(x)
          return mylist
      

      【讨论】:

      • 嗨 Nahean!欢迎来到 SE!为了更好地帮助提问者和未来的读者,连同工作代码,请包括问题所在以及您如何解决它。另外,请阅读格式化指南以了解如何正确格式化代码。
      【解决方案5】:
      def myfunc(*args):
          even=[]
          for n in args:
              if n %2==0:
                  even.append(n)
              else:
                  pass
              
          return even
      myfunc(1,2,3,4,8,9)
      

      【讨论】:

      • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的回答添加解释并说明适用的限制和假设。
      【解决方案6】:
      def myfunc(*args):
          #solution 1
          # Create an empty list
          mylist = []
          for number in args:
              if number %2 == 0:
                  mylist.append(number)
              else:
                  pass
          # return the list
          return mylist
          
          #solution 2
          # Uses a list comprehension that includes the logic to find all evens and the list comprehension returns a list of those values
          # return [n for n in args if n%2 == 0]
      

      【讨论】:

        【解决方案7】:

        您需要创建一个空列表来包含偶数。还将您的参数转换为列表。然后将偶数追加到新创建的列表中。

        def myfunc(*args):
        new_list = []
        for num in list(args):
            if num % 2 == 0:
                new_list.append(num)
        else:
            pass
        return new_list 
        

        【讨论】:

          【解决方案8】:
          def myfunc(*args):
              x=[]
              for i in list(args):
                  if i%2==0:
                      x.append(i)
              return x
          

          【讨论】:

          • 嗨,火影忍者,欢迎来到 SE!为了更好地帮助提问者和未来的读者,连同工作代码,请包括问题所在以及您如何解决它。另外,请阅读formatting guidelines 以了解如何正确格式化代码。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多