Объявление функции python с параметрами массива и передача аргумента массива вызову функции?

Я полный новичок на python и пытаюсь передать массив как аргумент функции python, объявляющей список/массив в качестве параметра.

Я уверен, что объявляю это неправильным,

здесь идет:

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

Ясно, что это не работает, что я делаю неправильно?

Спасибо

Ответы

Ответ 1

Что у вас есть на правильном пути.

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)).

Ответ 2

Может быть, вы хотите распаковать элементы массива, я не знаю, получил ли я его, но ниже примера:

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

Я думаю, я не понимаю, о чем действительно спрашивал 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]]