Python функция с вложенными списками - PullRequest
0 голосов
/ 19 июня 2020

Мне сложно понять, как функции работают с вложенными списками. Например:

def function(x):
   return (i for i in x)

x = function([[99, 0], [0, 99]])
print(list(x))

Дает результат:

[[99, 0], [0, 99]]

Однако этот код:

def function(x):
   for i in x:
       return i

x = function([[99, 0], [0, 99]])
print(list(x))

дает:

[99, 0]

Почему второй код не выводит второй компонент списка?

Ответы [ 2 ]

3 голосов
/ 19 июня 2020

Во втором коде функция возврата находится внутри l oop. Как только ваша функция увидит return один раз, все будет закончено.
В первом коде return вызывается генератором внутри круглых скобок, поэтому все, что находится внутри скобок, выполняется при вызове функции.

1 голос
/ 19 июня 2020

Во втором фрагменте кода итерация выполняется в списке списков ([[99, 0], [0, 99]]), поэтому при выполнении итерации он будет извлекать первый элемент списка, который равен [ 99,0], а в следующей строке - оператор возврата при встрече, который заставляет функцию прекращать выполнение и передавать значение тому, кто ее вызвал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...