繁体   English   中英

使用数组参数声明python函数并将数组参数传递给函数调用?

[英]Declaring a python function with an array parameters and passing an array argument to the function call?

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

我确信我宣布错了,

开始:

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

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

谢谢

你所拥有的是正确的轨道。

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))舞蹈中执行x in range(len(thelist))

也许你想要解包数组元素,我不知道我是否得到它,但是在一个例子中:

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)

我想我不清楚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]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM