2012-08-12 18 views
14

Python'a ve bir diziyi, parametre olarak bir liste/dizi bildiren bir python işlevine bir argüman olarak iletmeye çalışan tam bir yeni kullanıcıyım. Bir python işlevini dizi parametreleriyle bildirme ve bir dizi argümanını işlev çağrısına geçirme?

herhalde yanlış ilan ediyorum eminim

,

buraya:

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

Açıkçası bu olmuyor, ben yanlış yapıyorum?

Teşekkür

+2

Bu çalışması gerekir İşte bir örnek. Bazı gerçek kodları gösterebilir misin? – stranac

+1

Daha fazla bağlam sağlayabilir misiniz, belki de başarısız olan gerçek kod? (Mümkünse, [iyi bir örnek] yapın (http://sscce.org/)). Ve ne demek * ile * kast ediyorsun? – phihag

+0

oh evet kesinlikle benim kötüyüm ... Bunu yapıyordum: x aralığında (len (liste)): print x; baskı listesi yerine [x] ... teşekkürler herkese! – user1020069

cevap

19

Ne var doğru yolda olduğunu. yineleme sırasında aksine C-aile dillerinde, genellikle endeksi izleme ile rahatsız gerekmez: Birkaç şey yukarıda Yorumunuzu verilen notu için

1 
2 
3 
red 
green 
blue 

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

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

çıkışını üretir Dizin kendisi önemli değilse, bir liste üzerinde. Yine de dizine ihtiyacınız varsa, 'u x in range(len(thelist)) dansını yapmak yerine index,element çiftini kullanabilirsiniz.

+1

Sanırım, 'enumerate (liste)' –

+0

Oh, tabiki kötüyüm. –

6

Belki Anladım, ben bilmiyorum dizinin elemanlarını açmak istiyorum, ama bir örnek aşağıda:

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

ben OP gerçekten soran ne konu hakkında net değilim sanırım .. Bütün diziyi/listeyi geçmek ve fonksiyonun içinde çalışmak ister misiniz? Veya dizideki/listedeki her şeyde/öğede aynı şeyi yapmak ister misiniz? İkincisi, dilediğin şey ise, iyi çalışan bir yöntem buldum.

Fortran ve C gibi programlama dilleri hakkında daha fazla bilgiye sahibim; bu dizinin içindeki her öğe üzerinde çalışan temel işlevleri tanımlayabilirsiniz. Sonunda buna eşdeğer python'u izledim ve çözümü burada tekrarlayabileceğimi düşündüm. Anahtar işlevi 'vektörleştirmektir'.

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) 

Çıktı:

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