Как вытащить списки из функции?

Рейтинг: -1Ответов: 2Опубликовано: 02.05.2023

Помогите пожалуйста достать из функции списки - zone = [] и zone2=[].

def foo(arr1, arr2):
        zone = []
        zone2=[]
        for i1, a1 in enumerate(arr1):
                for i2, a2 in enumerate(arr2):
                        if a2-a1<0:
                                zone.append(i1)
                                zone2.append(i2)
                                break

        print(zone,zone2)

x1 = [1.11, 1.11, 1.12, 1.12, 1.13, 1.08, 1.65, 1.65, 1.05, 1.05, 1.05, 1.05, 1.1, 1.1, 1.05] 
x2 = [1.66, 1.66, 1.58, 1.58, 1.61, 1.61, 1.82, 1.82, 1.65, 1.65, 1.77, 1.77, 1.65, 1.65, 1.46] 
   
foo(x1, x2)

Ответы

▲ 2Принят
  • возвращаете нужные вам значения в виде кортежа из функции через return
  • получаете результат работы функции
  • распаковываете результат-кортеж в отдельные переменные, если нужно
def foo(arr1, arr2):
    zone = []
    zone2 = []
    # основной код функции для примера не важен, я его пропускаю
    ...
    return zone, zone2

x1 = [1.11, 1.11, 1.12, 1.12, 1.13, 1.08, 1.65, 1.65, 1.05, 1.05, 1.05, 1.05, 1.1, 1.1, 1.05] 
x2 = [1.66, 1.66, 1.58, 1.58, 1.61, 1.61, 1.82, 1.82, 1.65, 1.65, 1.77, 1.77, 1.65, 1.65, 1.46] 
   
z1, z2 = foo(x1, x2)
print(z1, z2)
▲ 0

def foo(arr1, arr2):
    zone = []
    zone2=[]
    for i1, a1 in enumerate(arr1):
        for i2, a2 in enumerate(arr2):
            if a2 - a1<0:
                zone.append(i1)
                zone2.append(i2)
                break

    yield zone
    yield zone2

x1 = [1.11, 1.11, 1.12, 1.12, 1.13, 1.08, 1.65, 1.65, 1.05, 1.05, 1.05, 1.05, 1.1, 1.1, 1.05] 
x2 = [1.66, 1.66, 1.58, 1.58, 1.61, 1.61, 1.82, 1.82, 1.65, 1.65, 1.77, 1.77, 1.65, 1.65, 1.46] 
z1, z2 = foo(x1, x2)
print(z1, z2)