Analise o código Python 2.7 a seguir.def f(x): for a in x[:...
Analise o código Python 2.7 a seguir.
def f(x):
for a in x[::-1]:
yield a
L1=[]
L2=[1,2,3,4]
for k in f(L2):
L1.append(k)
for x in L1:
print x
Esse programa causa
Comentários
Veja os comentários dos nossos alunos
O enunciado está transcrito corretamente (sem indentação). Lembrem-se de que a indentação é uma característica importante no Python.
Reformulando a questão para fins de aprendizado.
----------------------------------------------------
Analise o código Python 3 a seguir.
def f(x):
>>for a in x[::-1]:
>>>>yield a
L1 = [ ]
L2 = [1, 2, 3, 4]
for k in f(L2):
>>L1.append(k)
for x in L1:
>>print(x)
----------------------------------------------------
Nesse caso, a alternativa correta seria: "esse programa causa a exibição dos valores 4,3,2,1, nessa ordem" (A).
def f(x):
>>for a in x[::-1]:
>>>>yield a
Define a função f(x), que inverte os elementos de uma lista x. O yield funciona mais ou menos como um return, mas mantém salvo o contexto da função.
for k in f(L2):
>>L1.append(k)
Armazena cada k de f(L2) numa lista vazia L1. Ou seja,
antes L1 = [ ]
depois L1 = [4, 3, 2, 1]
for x in L1:
>>print(x)
Esse último passo exibe no shell a sequência:
>4
>3
>2
>1
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo