我是python的新手,并尝试将数组作为参数传递给python函数,该函数声明列表/数组作为参数。
我确信我宣布错了,
这里是:
def dosomething(listparam):
#do something here
dosomething(listargument)
显然这不起作用,我做错了什么?
由于
答案 0 :(得分:23)
你所拥有的是正确的轨道。
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))
舞蹈。
答案 1 :(得分:12)
也许你想要解包数组的元素,我不知道我是否得到它,但是在一个例子之下:
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)
答案 2 :(得分: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]]