Объявление функции 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]]