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

问题描述 投票:-1回答:3

这个问题在这里已有答案:


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]的输出

python list
3个回答
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

0
投票

我就是这样做的

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

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


0
投票

我想你应该这样试试。

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)
© www.soinside.com 2019 - 2024. All rights reserved.