Задать вопрос
@Timebird

Как заставить return возвращать несколько массивов?

Здравствуйте.
Вопрос таков: вот перемножаю первый, второй, третий, ..., j-ое значения одного массива на каждый из элементов другого массива. В итоге при выводе на печать получается j массивов. Но никак не могу понять, как именно j массивов запихнуть в return? При вызове в последующей функции все операции происходят только с первым из них.

def getcoordinates(array1, array2):
	"""Перемножаем [cначала первое, потом второе, ..., j-ое] значения первого массива на каждый из элементов второго массива."""

    for j in array1:
		    array3 = [j * i for i in array2]
		    print(array3)
		    return array3

def buildgraph(array3, array1):
	print(array3) #тут выводится только первый массив вместо j-ого количества массивов
  • Вопрос задан
  • 981 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@delphikettle
Программирую в свободное от учёбы время
return завершает выполнение функции.
Чтобы return вернул j массивов, нужно тогда возвращать двумерный массив. Для этого перед for объявляем некий массив; arrayRes=[], а в цикле вместо return добавляем каждый array3 к нашему массиву: arrayRes.append(array3), а в конце функции, после цикла, пишемreturn arrayRes
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
ZeroDX
@ZeroDX
Бездельник
Если я правильно понял задачу
def getcoordinates(a1, a2):
    return [[x*y for x in a2] for y in a1]

аналог
def getcoordinates(a1, a2):
    res = []
    for x in a1:
        tmp = []
        for y in a2:
            tmp.append(x*y)
        res.append(tmp)
    return res
Ответ написан
Комментировать
sgjurano
@sgjurano
Разработчик
Еще можно возвращать генераторы, вот так:

def func():
for i in xrange(10):
yield xrange(10)
Ответ написан
Комментировать
Mogidin
@Mogidin
def getcoordinates(array1, array2):
	for j in array1:
		array3 = [j * i for i in array2]
		yield array3

array1 = [1,2,3,4,5,6,7,8,9]
array2 = [10,20,30,40,50,60,70,80,90]

for a in getcoordinates(array1, array2):
	print a
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы