Функция, работающая с каждым элементом одного массива и записывающая в другой

257 просмотра
0
0 Комментариев

Дана функция sin(2*3.14*a/50)/cos(2*3.14*a/50). Нужно определить функцию, которая берет каждый элемент, скажем, списка a и записывает в соотв. элементы списка y. Затем заполнить a и с помощью функции переписать в y.
Код на C:

#include <stdio.h>
#include <math.h>
void tangens (int *a, float *y)
{
    *y = sin(2*3.14*(*a)/50)/cos(2*3.14*(*a)/50);
}
 
main()
{
int i;
int a[50];
float b[50];
for(i=0; i < 50; i++)
{
    tangens(&(a[i]), &(b[i]));
    printf("%f, ", b[i]);
}
}

Вроде так, а вот аналогично на python… Как ни пытаюсь, разобраться не выходит. Именно определение функции со списками в кач-ве аргумента. Ковырялся внутри, объявлял пустую + внутри добавлял функ. append() — все ни по чем. как бы вы эту самую функцию определили?


Добавить комментарий

1 Ответы

Python Опубликовано 10.12.2018
0

def some_function(x):
    return x * x
 
def f1(a):
    return [some_function(x) for x in a]
    # return map(some_function, a)
 
def f2(a, b):
    for i in range(len(a)):
        b[i] = some_function(a[i])
 
a = [1, 2, 3]
b = [0, 0, 0]
 
f2(a, b)
print b
 
print f1(a)

закомментированная строка в f1 эквивалентна разкомментированной.

Кстати, в Вашем примере на С, функция tangens вовсе не работает с массивами, если вы уж вызываете ее в цикле. Функция работающая с массивами выглядит, например, так:

void tangens(int *a, float *y, int num_of_items) {
    fot (int i=0; i<num_of_items; i++) {
        *(y++) = sin(pi * (*a)) / cos(pi * (*a));
        a++;
    }
}

или так:

void tangens(int *a, float *y, int num_of_items) {
    fot (int i=0; i<num_of_items; i++) {
        y[i] = sin(pi * a[i]) / cos(pi * a[i]);
    }
}

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up