我该如何解决这个问题。我正在尝试使用 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