我是一個Python新手,並試圖將數組作爲參數傳遞給聲明列表/數組作爲參數的python函數。使用數組參數聲明一個python函數並將數組參數傳遞給函數調用?
我相信我聲明是錯誤的,
這裏有雲:
def dosomething(listparam):
#do something here
dosomething(listargument)
顯然,這是行不通的,我究竟做錯了什麼?
謝謝
我是一個Python新手,並試圖將數組作爲參數傳遞給聲明列表/數組作爲參數的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))
跳舞。
我想你的意思是'枚舉(列表)' – 2012-08-12 23:45:22
哦,當然,我的不好。 – 2012-08-12 23:48:00
也許你想解開數組的元素,我不知道如果我得到它,但下面的例子:
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]]
它應該工作。你能展示一些真實的代碼嗎? – stranac 2012-08-12 23:24:58
你能提供一些更多的上下文,也許實際的代碼失敗? (如果可能,使其成爲[很好的例子](http://sscce.org/))。你說*聲明*是什麼意思? – phihag 2012-08-12 23:25:01
哦,是的,這是絕對是我的壞...我這樣做: 爲範圍內的x(len(列表)): print x; 而不是打印列表[x] ...謝謝大家! – user1020069 2012-08-12 23:35:39