python - 如何在 Python 中将列表作为函数的输入传递

标签 python arrays list function

我正在使用 Python,并且我有一个将列表作为参数的函数。例如,我使用以下语法,

def square(x,result= []):
    for y in x:
        result.append=math.pow(y,2.0)
        return result

print(square([1,2,3]))

并且输出是 [1] 只有在我应该得到 [1,4,9] 的地方。

我做错了什么?

最佳答案

为什么不完全回避这个问题呢?

def square(vals):
    return [v*v for v in vals]

编辑:正如一些人指出的那样,第一个问题是您正在使 for 循环短路。您的返回应该在循环之后出现,而不是在循环中。

下一个问题是您对 list.append 的使用 - 您需要调用它,而不是分配给它,即 result.append(y*y)result.append = y*y 而是用数值覆盖该方法,下次您尝试调用它时可能会抛出错误。

一旦你解决了这个问题,如果你重复调用你的函数,你会发现另一个不太明显的错误:

print(square([1,2,3])     # => [1, 4, 9]
print(square([1,2,3])     # => [1, 4, 9, 1, 4, 9]

因为您传递了一个可变项(列表)作为默认值,所以对该默认项的所有进一步使用都指向相同的原始列表

相反,尝试

def square(vals, result=None):
    if result is None:
        result = []
    result.extend(v*v for v in vals)
    return result

关于python - 如何在 Python 中将列表作为函数的输入传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35120620/

相关文章:

python - .txt 文件中的 NumPy 数组太大,无法加载到内存中

python - 在 Python 中创建\x 单字符十六进制值

python - Trapz 对一定范围内的分组数据进行积分

javascript - Typescript:类型 'Promise<{}>' 无法分配给类型

python - 如何从两个 "array.flatten()"-ed列表在python中创建字符串列表

python - _<parent_class><__method_name> 模式覆盖父类 <__method_name>,为什么?

c - 我想找出我的 C 字符串中有多少个元音和辅音

C++:使用非默认构造函数动态分配结构成员数组

python - 在 Python 中从 XML 打印数据以列表样式(表格)

c# - 将元素的多个属性返回到列表。 LINQ 到 XML