【问题标题】:How do I fix this problem. I'm trying to use the len function but it's not working as desired [duplicate]我该如何解决这个问题。我正在尝试使用 len 功能,但它没有按预期工作 [重复]
【发布时间】:2019-04-28 06:41:53
【问题描述】:

def mult(numbers):
        return [10] * len(numbers)

number = [1,2,5,6,7,8,10]
mult(number)

我期望[10,20,50.......] 的输出 但这是我得到的输出[10, 10, 10, 10, 10, 10, 10]

【问题讨论】:

  • 这不是len() 所做的(显然)。如果尚未完成,您应该通过Python tutorial

标签: python list


【解决方案1】:

这是你正在做的,带注释的:

def mult(numbers):
    return [10] * len(numbers)
    # [10]                -->  Take the list [10]
    # len(numbers)        -->  Take the length of the list `numbers`, which has 7 elements
    # [10] * len(numbers) -->  repeat [10] seven times, to get [10, 10, 10, 10, 10, 10, 10]

我认为问题在于您误解了len() 函数的作用,以及*(乘法)运算符如何处理列表。如果你想将每个数字乘以 10,你可以这样做:

def mult(numbers):
    multed = []                 # create an empty list to store the result
    for num in numbers:         # iterate through the elements in `numbers` one by one
        multed.append(10 * num) # add (10 * element) to our new list
    return multed               # return the list we've created

Python 还具有 列表推导,可以使这段代码更简洁:

def mult(numbers):
    return [10*num for num in numbers]
    # this does the same thing as above

【讨论】:

    【解决方案2】:

    我会这样做

    def mult(numbers):
        return [10*i for i in numbers]
    number = [1,2,5,6,7,8,10]
    mult(number)
    

    您的方法只是取值 10 并复制等于输入数组的 len 的次数。

    【讨论】:

      【解决方案3】:

      我认为你应该尝试这种方式。

      def mult(number):
           return 10 * number
      
      number = [1,2,5,6,7,8,10]
      answer = []
      
      for i in number:
          answer.append(mult(i))
      
      print(answer)
      

      【讨论】:

        猜你喜欢
        • 2021-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-12
        • 2021-07-27
        • 1970-01-01
        • 1970-01-01
        • 2019-03-14
        相关资源
        最近更新 更多