声明一个带有数组参数的python函数并将一个数组参数传递给函数调用?

Posted

技术标签:

【中文标题】声明一个带有数组参数的python函数并将一个数组参数传递给函数调用?【英文标题】:Declaring a python function with an array parameters and passing an array argument to the function call? 【发布时间】:2012-08-09 05:29:30 【问题描述】:

我是 python 的新手,并试图将数组作为参数传递给 python 函数,该函数将列表/数组声明为参数。

我确定我说错了,

这里是:

def dosomething(listparam):
         #do something here
dosomething(listargument)

显然这不起作用,我做错了什么?

谢谢

【问题讨论】:

它应该可以工作。你能展示一些真实的代码吗? 您能否提供更多上下文,也许是失败的实际代码? (如果可能,请将其设为good example)。 声明是什么意思? 哦,是的,这绝对是我的错……我正在这样做:for x in range(len(list)): print x;而不是 print list[x] ...谢谢大家! 这看起来是正确的;您是否收到特定的错误消息?也许您还没有在 listargument 中声明/放入某些内容? 【参考方案1】:

你所拥有的一切都在正确的轨道上。

def dosomething( thelist ):
    for element in thelist:
        print element

dosomething( ['1','2','3'] )
alist = ['red','green','blue']
dosomething( alist )  

产生输出:

1
2
3
red
green
blue

鉴于您上面的评论,有几点需要注意:与 C 系列语言不同,您通常不需要在迭代列表时费心跟踪索引,除非索引本身很重要。但是,如果您确实需要索引,则可以使用 enumerate(list) 来获得 index,element 对,而不是使用 x in range(len(thelist)) 跳舞。

【讨论】:

我想你的意思是enumerate(list)【参考方案2】:

也许你想解压一个数组的元素,我不知道我明白了没有,下面是一个例子:

def my_func(*args):
    for a in args:
        print(a)

my_func(*[1,2,3,4])
my_list = ['a','b','c']
my_func(*my_list)

【讨论】:

【参考方案3】:

我想我不清楚 OP 的真正要求是什么……你想传递整个数组/列表并在函数内部对其进行操作吗?或者您是否希望对数组/列表中的每个值/项执行相同的操作。如果后者是您希望的,我已经找到了一种行之有效的方法。

我更熟悉 Fortran 和 C 等编程语言,您可以在其中定义元素函数,这些函数对数组中的每个元素进行操作。我终于找到了与此等效的python,并认为我会在这里重新发布解决方案。关键是对函数进行“矢量化”。这是一个例子:

def myfunc(a,b):
    if (a>b): return a
    else: return b
vecfunc = np.vectorize(myfunc)
result=vecfunc([[1,2,3],[5,6,9]],[7,4,5])
print(result)

输出:

[[7 4 5]
 [7 6 9]]

【讨论】:

以上是关于声明一个带有数组参数的python函数并将一个数组参数传递给函数调用?的主要内容,如果未能解决你的问题,请参考以下文章

带有数组的函数不起作用

使用指针数组作为函数的参数

创建一个 Spark udf 函数以迭代字节数组并将其转换为数字

再论函数指针函数指针数组

涵盖数组和类型化数组的 TypeScript 接口

关于作为函数参数的多维数组的声明定义和调用