Estou aprendendo python. Minha pesquisa usando o Google não encontrou nenhuma descrição do que está acontecendo aqui. Estou fazendo alguns exercícios básicos.
Uma pessoa no site codewars apresentou esta solução para um problema:
data=[[18, 20], [45, 2], [61, 12], [37, 6], [21, 21], [78, 9]]
def openOrSenior(data):
return ["Senior" if age >= 55 and handicap >= 8 else "Open" for (age, handicap) in data]
Não consigo entender como eles podem usar uma tupla para acessar os elementos da sublista. Como isso é chamado em Python e como funciona?
for (age, handicap) in data
Isso não é uma tupla, é apenas descompactação de sequência.
(x, y) = [1, 2]
por exemplo, é perfeitamente legal, pois o lado esquerdo significa apenas "atribuir o primeiro elemento ax
e o segundo elemento ay
". Não é uma tupla cujo tipo corresponde ao tipo do objeto que está sendo descompactado.Isso é conhecido como "descompactação de tupla". Em termos simples, é uma maneira concisa de extrair itens de uma lista e atribuir variáveis a esses valores.
Neste caso específico, os
for (age, handicap)
dados in estão iterando pela lista de dados e, para cada sublista dentro dos dados, estão extraindo o primeiro elemento comoage
e o segundo elemento comohandicap
. Supõe-se que cada sublista contém dois elementos e os descompacta nas variáveisage
ehandicap
respectivamente.Assim, por exemplo, com
data=[[18, 20], [45, 2], [61, 12]]
, durante a iteração, a primeira iteração atribuiriaage = 18
ehandicap = 20
, a segunda atribuiriaage = 45
ehandicap = 2
, e assim por diante até esgotar as sublistas de dados.Na minha opinião, Tuple Unpacking é uma maneira muito poderosa e eficiente de lidar com a iteração através de sequências.
isso não é tupla, apenas descompacta a sublista se você usar sem parênteses ainda funcionará como abaixo