我是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))
舞蹈。
也许你想解压缩数组的元素,我不知道我是否得到了它,但在下面的一个例子中:
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]]