Список кортежей в функции объяснил - PullRequest
0 голосов
/ 02 мая 2020

Недавно я начал изучать Python для исследований, я пришел из JS, веб-разработки Frontend UI / UX, так что вы можете себе представить, что все это совершенно новая для меня концепция.

I Я просто вхожу в мир данных и кортежей. В мире данных очень важна концепция, что JS не имеет поддержки syntacti c для кортежей, однако у него есть map и set и управление доступом. данные с const и let, что, на мой взгляд, поддержка кортежей обогатит JS опыт программирования.

Мне очень удобно работать с терминалом и печатать все из командной строки, я не нравится вообще Интерактивный режим или Jupyter, я думаю, что теряю контроль.

Но сегодня я столкнулся с newb ie проблемой

Давайте начнем с этой основы c пример, и я думаю, что это то, что обычно должно печататься, когда нам нужен список кортежей:

## I will create a list of tuples
coordinates = [(1,2),(3,4),(5,6)]
for (x,y) in coordinates : 
    print(x,y)

## The Result:
1 2
3 4
5 6     

Теперь давайте попробуем пример " function ", и здесь мой вопрос: проблема у нее Дело в том, что return дает нам только один кортеж и тип кортежа отсутствует в списке:

import random

def AllX() :  
    low = 10
    high = 90
    mini = 20
    maxi = 50

    coordinates = [(random.randint(low, high), random.randint(mini, maxi)) for k in range(10)]

    coordinates += [(1,2),(3,4),(5,6)]

    for (x,y) in coordinates :
        # run = x,y
        return (x,y)

print(AllX())

## The Result:
(79, 45)

Если я использую print вместо return Я получу следующий результат:

## The Result:

76 28
11 49
60 23
78 33
49 44
77 46
56 45
31 25
17 23
53 22
None

Но это будет не то, что мы действительно ожидали, нам нужен список и потому (как случайный пример), если мы Если вы хотите использовать эту функцию в других ситуациях, нам нужно было вернуть список.

И еще одна вещь, которая ставит меня под вопрос мое понимание логики c перечисления кортежей или даже циклов, заключается в том, что если мы используем та же функция, но давайте попробуем l oop ту же функцию с return:

generator = AllX()

for item in generator :
    print(item)

Результат вернет только 2 числа, принадлежащих случайному кортежу:

## The Result:

27
33

надеюсь, кто-то может дать мне некоторое руководство или объяснение того, почему / как это происходит в return и почему, если мы хотим повторить ту же функцию, результат будет таким

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

result список даст все X, а coordinates список даст и x, и y.

import random
def AllX():
    low = 10
    high = 90
    mini = 20
    maxi = 50
    result = []
    coordinates = [(random.randint(low, high), random.randint(mini, maxi)) for k in range(10)]
    coordinates += [(1,2),(3,4),(5,6)]
    print(coordinates)
    for (x,y) in coordinates:
        # run = x,y
        result.append(x)
    return result
print(AllX())
0 голосов
/ 02 мая 2020

Оператор return немедленно возвращает и выходит из функции. Если вы вызываете return в al oop, он просто возвращает элемент в l oop, а l oop не будет go дальше.

def AllX() :  
    low = 10
    high = 90
    mini = 20
    maxi = 50

    coordinates = [(random.randint(low, high), random.randint(mini, maxi)) for k in range(10)]

    coordinates += [(1,2),(3,4),(5,6)]
    return coordinates
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...