我该如何解决这个问题。我正在尝试使用 len 功能,但它没有按预期工作 [重复]

Posted

技术标签:

【中文标题】我该如何解决这个问题。我正在尝试使用 len 功能,但它没有按预期工作 [重复]【英文标题】:How do I fix this problem. I'm trying to use the len function but it's not working as desired [duplicate] 【发布时间】: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 【参考方案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)

【讨论】:

以上是关于我该如何解决这个问题。我正在尝试使用 len 功能,但它没有按预期工作 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:“map”类型的对象没有 len() Python3

我该如何解决这个错误无法打开 SSL LIbrary

我该如何解决这个 pipenv 安装错误 - vscode 上的 django 项目

为啥我的搜索功能没有按预期工作,我该如何解决?

我该如何解决这个问题以提高效率?

奇怪的 C++ std::string 行为......我该如何解决这个问题?