1. Como usar funções Lambda em Python

Por Alan Shovic, John Shovic

O Python suporta o conceito de funções anônimas, também chamadas de funções lambda. A parte anônima do nome baseia-se no fato de que a função não precisa ter um nome (mas pode ter um, se você desejar). A parte lambda é baseada no uso da palavra-chave lambda para defini-los no Python. Lambda também é a 11ª letra do alfabeto grego.

Mas a principal razão pela qual o nome é usado no Python é porque o termo lambda é usado para descrever funções anônimas no cálculo. Agora que esclarecemos tudo, você pode usar essas informações para desencadear conversas fascinantes nas festas do escritório.

A sintaxe mínima para definir uma expressão lambda (sem nome) com Python é:

Argumentos do Lambda: expressão

Ao usá-lo:

  • Substitua os argumentos pelos dados que estão sendo passados ​​para a expressão. Substitua expressão por uma expressão (fórmula) que define o que você deseja que o lambda retorne.

Um exemplo bastante comum do uso dessa sintaxe é quando você está tentando classificar cadeias de texto em que alguns dos nomes começam com letras maiúsculas e outros com letras minúsculas, como nestes nomes:

Adams, Ma, Zandusky diMeola

Suponha que você escreva o seguinte código para colocar os nomes em uma lista, classifique-o e imprima a lista, assim:

names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort ()
print (nomes)

Essa saída disso é:

['Adams', 'Ma', 'Zandusky', 'diMeola']

Ter o diMeola vindo atrás de Zandusky parece errado para alguns iniciantes. Mas os computadores nem sempre veem as coisas da maneira que vemos. (Na verdade, eles não "veem" nada porque não têm olhos ou cérebros ... mas isso não vem ao caso.) A razão pela qual o diMeola vem depois de Zandusky é porque o tipo é baseado no ASCII, que é um sistema no qual cada caractere é representado por um número.

Todas as letras minúsculas têm números maiores que os maiúsculos. Portanto, ao classificar, todas as palavras que começam com letras minúsculas vêm depois das palavras que começam com uma letra maiúscula. Se nada mais, pelo menos merece um pequeno hmm.

Para ajudar com esses assuntos, o método sort () do Python permite incluir uma expressão key = entre parênteses, onde é possível dizer como classificar. A sintaxe é:

.sort (chave = transformação)

A parte de transformação é uma variação nos dados que estão sendo classificados. Se você tiver sorte e uma das funções internas, como len (for length), funcionar para você, basta usá-lo no lugar da transformação, desta forma:

names.sort (chave = len)

Infelizmente para nós, o comprimento da string não ajuda na alfabetização. Então, quando você executa isso, o pedido acaba sendo:

['Ma', 'Adams', 'diMeola', 'Zandusky']

A classificação vai da sequência mais curta (aquela com o menor número de caracteres) para a sequência mais longa. Não é útil no momento.

Você não pode escrever key = lower ou key = upper para basear a classificação em todas as letras minúsculas ou maiúsculas, porque as letras maiúsculas e minúsculas não são funções internas (que você pode verificar rapidamente pesquisando no python 3.7 interno) funções).

Em vez de uma função interna, você pode usar uma função personalizada que você define usando def. Por exemplo, você pode criar uma função chamada lower () que aceita uma string e retorna essa string com todas as suas letras convertidas em minúsculas. Aqui está a função:

def inferior (qualquer corda):
"" "Converte a string em todas as letras minúsculas" ""
retornar anystring.lower ()

O nome inferior é composto e anystring é um espaço reservado para qualquer string que você passar para ela no futuro. O retorno anystring.lower () retorna essa string convertida para todas as minúsculas usando o método .lower () do objeto str (string). (Leia sobre os métodos de string do Python para obter mais informações.)

Você não pode usar key = lower entre parênteses sort () porque lower () não é uma função interna. É um método ... não é o mesmo. Meio chato com todas essas chavões.

Suponha que você grave essa função em uma célula Jupyter ou arquivo .py. Em seguida, você chama a função com algo como print (letras minúsculas ('Zandusky')). O que você obtém como saída é aquela string convertida para todas as minúsculas, como você vê abaixo.

função personalizada lower () em Python

Ok, agora você tem uma função personalizada para converter qualquer string em todas as letras minúsculas. Como você usa isso como uma chave de classificação? Fácil, use key = transform da mesma forma que antes, mas substitua transform por seu nome de função customizado. A função é denominada lowercaseof, portanto, você deve usar .sort (key = lowercaseof), conforme mostrado a seguir:

def lowercaseof (anystring):
"" "Converte a string em todas as letras minúsculas" ""
retornar anystring.lower ()
 
names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort (key = lowercaseof)

A execução desse código para exibir a lista de nomes os coloca na ordem correta, porque baseou a classificação em cadeias de caracteres todas minúsculas. A saída é a mesma de antes, porque apenas a classificação, realizada nos bastidores, usava letras minúsculas. Os dados originais ainda estão em letras maiúsculas e minúsculas originais.

'Adams', 'diMeola', 'Ma', 'Zandusky'

Se você ainda está acordado e consciente depois de ler tudo isso, pode estar pensando: "Ok, você resolveu o problema de classificação. Mas eu pensei que estávamos falando sobre funções lambda aqui. Onde está a função lambda? ”Ainda não existe uma função lambda.

Mas este é um exemplo perfeito de onde você pode usar uma função lambda, porque a função Python que você está chamando, lowercaseof (), faz todo o trabalho com apenas uma linha de código: return anystring.lower ().

Quando sua função pode funcionar com uma expressão simples de uma linha como essa, você pode pular o def e o nome da função e apenas usar esta sintaxe:

parâmetros lambda: expressão

Substitua parâmetros por um ou mais nomes de parâmetros criados por você (os nomes entre parênteses após def e o nome da função em uma função regular). Substitua expressão pelo que você deseja que a função retorne sem a palavra return. Portanto, neste exemplo, a chave, usando uma expressão lambda, seria:

lambda anystring: anystring.lower ()

Agora você pode ver por que é uma função anônima. A primeira linha inteira com o nome da função lowercaseof () foi removida. Portanto, a vantagem de usar a expressão lambda é que você nem precisa da função personalizada externa. Você só precisa do parâmetro seguido de dois pontos e uma expressão que diga o que retornar.

A imagem abaixo mostra o código completo e o resultado da execução. Você obtém a ordem de classificação correta sem a necessidade de uma função externa do cliente, como lowercaseof (). Você acabou de usar anystring: anystring.lower () (após a palavra lambda) como chave de classificação.

Expressão lambda Python

Vamos também acrescentar que anystring é um nome de parâmetro mais longo do que a maioria dos Pythonistas usaria. O pessoal do Python gosta de nomes curtos, até de uma única letra. Por exemplo, você pode substituir anystring por s (ou qualquer outra letra), como a seguir, e o código funcionará exatamente da mesma maneira:

names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort (chave = lambda s: s.lower ())
print (nomes)

No começo desse discurso, foi mencionado que uma função lambda não precisa ser anônima. Você pode dar nomes a eles e chamá-los como faria com outras funções.

Por exemplo, aqui está uma função lambda denominada moeda que pega qualquer número e retorna uma sequência no formato de moeda (ou seja, com um sinal de dólar inicial, vírgulas entre milhares e dois dígitos para moedas de um centavo):

moeda = lambda n: f "$ {n:,. 2f}"

Aqui está um percentual nomeado que multiplica qualquer número que você enviar para ele por 100 e mostra com dois sinais de porcentagem no final:

porcentagem = lambda n: f "{n: 0,2%}"

A imagem a seguir mostra exemplos de ambas as funções definidas na parte superior de uma célula Jupyter. Em seguida, algumas instruções de impressão chamam as funções pelo nome e passam alguns dados de amostra para elas. Cada instrução print () exibe o número no formato desejado.

Números de formatação Python

A razão pela qual você pode defini-los como lambdas de linha única é porque você pode fazer todo o trabalho em uma linha, f "$ {n:,. 2f}" para o primeiro ef "{n: .2%}" para o segundo. Mas só porque você pode fazer dessa maneira, não significa que você deve. Você também pode usar funções regulares, como a seguir:

# Mostra o número no formato da moeda.
moeda def (n):
retornar f "$ {n:,. 2f}"
 
por cento de definição (n):
# Mostra o número no formato percentual.
retornar f "{n: .2%}"

Com essa sintaxe mais longa, você também pode passar mais informações. Por exemplo, você pode usar como padrão um formato alinhado à direita em uma certa largura (digamos 15 caracteres) para que todos os números saiam alinhados à direita na mesma largura. A imagem mostra essa variação nas duas funções.

Função de formatação Python largura fixa

Na imagem acima, o segundo parâmetro é opcional e o padrão é 15 se omitido. Então, se você chamar assim:

imprimir (moeda (9999))

… Você recebe US $ 9.999,00 com espaço suficiente à esquerda para ter 15 caracteres de largura. Se você chamar assim:

impressão (moeda (9999,20)

… Você ainda recebe US $ 9.999,00, mas preenchido com espaços suficientes à esquerda para ter 20 caracteres de largura.

O .ljust () usado acima é um método de string interno do Python que preenche o lado esquerdo de uma string com espaços suficientes para torná-la na largura especificada. Há também um método rjust () para preencher o lado direito. Você também pode especificar um caractere que não seja um espaço. Google python 3 apenas se precisar de mais informações.

Então, aí está, a capacidade de criar suas próprias funções personalizadas no Python. Na vida real, o que você quer fazer é que, sempre que achar que precisa acessar o mesmo pedaço de código - o mesmo pedaço de login - repetidamente no aplicativo, não basta copiar / colar esse pedaço de código repetidamente. Em vez disso, coloque todo esse código em uma função que você possa chamar pelo nome.

Dessa forma, se você decidir alterar o código de string do Python, não precisará pesquisar no aplicativo para encontrar todos os lugares que precisam ser alterados. Basta alterá-lo na função em que tudo está definido em um só lugar.

  1. Como definir e usar listas Python

Por Alan Shovic, John Shovic

A coleta de dados mais simples em Python é uma lista. Uma lista é qualquer lista de itens de dados, separados por vírgulas, entre colchetes. Normalmente, você atribui um nome à lista Python usando um sinal =, assim como faria com variáveis. Se a lista contiver números, não use aspas. Por exemplo, aqui está uma lista de pontuações de teste:

pontuações = [88, 92, 78, 90, 98, 84]

Se a lista contiver cadeias, como sempre, essas cadeias deverão ser colocadas entre aspas simples ou duplas, como neste exemplo:

Para exibir o conteúdo de uma lista na tela, você pode imprimi-lo da mesma forma que imprimiria qualquer variável regular. Por exemplo, a execução de impressão (alunos) no seu código depois de definir essa lista mostra isso na tela.

['Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

Isso pode não ser exatamente o que você tinha em mente. Mas não se preocupe, o Python oferece muitas ótimas maneiras de acessar dados em listas e exibi-los da maneira que desejar.

Referenciando itens da lista Python por posição

Cada item de uma lista tem um número de posição, começando com zero, mesmo que você não veja nenhum número. Você pode consultar qualquer item da lista por seu número, usando o nome da lista seguido por um número entre colchetes. Em outras palavras, use esta sintaxe:

nome da lista [x]

Substitua listname pelo nome da lista que você está acessando e substitua x pelo número da posição do item que você deseja. Lembre-se, o primeiro item é sempre o número zero, não um. Por exemplo, na primeira linha abaixo, defino uma lista chamada alunos e, em seguida, imprimo o número de item zero dessa lista. O resultado, ao executar o código, é que o nome Mark é exibido.
alunos = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
imprimir (alunos [0])
Marca

Ao ler os itens da lista de acesso, os profissionais usam a palavra sub antes do número. Por exemplo, os alunos [0] seriam falados como alunos abaixo de zero.

O próximo exemplo mostra uma lista chamada pontuações. A função print () imprime o número da posição da última pontuação na lista, que é 4 (porque a primeira é sempre zero).

pontuações = [88, 92, 78, 90, 84]
print (pontuações [4])
84

Se você tentar acessar um item da lista que não existe, você receberá um erro "índice fora do intervalo". A parte do índice é uma referência ao número entre colchetes. Por exemplo, a imagem abaixo mostra um pequeno experimento em um caderno Jupyter, onde uma lista de pontuações foi criada e, em seguida, a impressão da pontuação [5] foi tentada.

Ele falhou e gerou um erro porque não há pontuações [5]. Existem apenas pontuações [0], pontuações [1], pontuações [2], pontuações [3] e pontuações [4] porque a contagem sempre começa em zero com a primeira da lista.

Intervalo de índice Python

Looping através de uma lista Python

Para acessar cada item de uma lista, basta usar um loop for com esta sintaxe:

para x na lista:

Substitua x por um nome de variável de sua escolha. Substitua lista pelo nome da lista. Uma maneira fácil de tornar o código legível é sempre usar um plural para o nome da lista (como alunos, notas). Depois, você pode usar o nome singular (aluno, pontuação) para o nome da variável. Você também não precisa usar números subscritos (números entre colchetes) com essa abordagem. Por exemplo, o código a seguir imprime cada pontuação na lista de pontuações:

para pontuação nas pontuações:
impressão (pontuação)

Lembre-se de sempre recuar o código a ser executado dentro do loop. Esta imagem mostra um exemplo mais completo em que você pode ver o resultado da execução do código em um notebook Jupyter.

Looping através de uma lista Python

Vendo se uma lista Python contém um item

Se você deseja que seu código verifique o conteúdo de uma lista para ver se ele já contém algum item, use no nome da lista em uma instrução if ou em uma atribuição de variável.

Por exemplo, o código na imagem abaixo cria uma lista de nomes. Em seguida, duas variáveis ​​armazenam os resultados da pesquisa na lista pelos nomes Anita e Bob. A impressão do conteúdo de cada variável mostra True para aquele em que o nome (Anita) está na lista. O teste para ver se Bob está na lista é falso.

Vendo se um item está em uma lista Python

Obtendo o comprimento de uma lista Python

Para determinar quantos itens estão em uma lista, use a função len () (abreviação de comprimento). Coloque o nome da lista entre parênteses. Por exemplo, digite o seguinte código em um bloco de anotações Jupyter ou prompt do Python ou o que for:

alunos = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
imprimir (len (estudantes))

A execução desse código produz esta saída:

5

Na verdade, existem cinco itens na lista, embora o último seja sempre um a menos que o número, porque o Python começa a contar em zero. Então o último, Sandy, na verdade se refere a estudantes [4] e não a estudantes [5].

Anexando um item ao final de uma lista Python

Quando você quiser que seu código Python adicione um novo item ao final de uma lista, use o método .append () com o valor que você deseja adicionar entre parênteses. Você pode usar um nome de variável ou um valor literal entre aspas.

Por exemplo, na imagem a seguir, a linha que lê students.append ("Goober") adiciona o nome Goober à lista. A linha que lê students.append (new_student) adiciona qualquer nome armazenado na variável denominada new_student à lista. O método .append () sempre adiciona ao final da lista. Então, quando você imprime a lista, vê esses dois novos nomes no final.

Lista anexada do Python

Você pode usar um teste para verificar se um item está em uma lista e anexá-lo somente quando o item ainda não estiver lá. Por exemplo, o código abaixo não adiciona o nome Âmbar à lista porque esse nome já está na lista:

student_name = "Amanda"

#Adicione o nome do aluno, mas apenas se ainda não estiver na lista.
if student_name nos alunos:
    print (nome_do_ aluno + "já está na lista")
outro:
    students.append (student_name)
    print (student_name + "adicionado à lista")

Inserindo um item em uma lista Python

Embora o método append () permita adicionar um item ao final de uma lista, o método insert () permite adicionar um item à lista em qualquer posição. A sintaxe para insert () é

listname.insert (posição, item)

Substitua listname pelo nome da lista, position pela posição em que você deseja inserir o item (por exemplo, 0 para torná-lo o primeiro item, 1 para torná-lo o segundo item e assim por diante). Substitua o item pelo valor ou o nome de uma variável que contém o valor que você deseja colocar na lista.

Por exemplo, o código a seguir faz do Lupe o primeiro item da lista:

#Crie uma lista de cadeias (nomes).
alunos = ["Mark", "Amber", "Todd", "Anita", "Sandy"]

student_name = "Lupe"
# Adicione o nome do aluno à frente da lista.
students.insert (0, student_name)

#Mostrar a nova lista.
imprimir (alunos)

Se você executar o código, print (alunos) mostrará a lista após o novo nome ter sido inserido, da seguinte maneira:

['Lupe', 'Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

Alterando um item em uma lista Python

Você pode alterar um item em uma lista usando o operador = assignment (verifique esses operadores comuns do Python) da mesma forma que faz com as variáveis. Apenas certifique-se de incluir o número do índice entre colchetes do item que você deseja alterar. A sintaxe é:

nome da lista [index] = novo valor

Substitua listname pelo nome da lista; substitua o índice pelo índice (número do índice) do item que você deseja alterar; e substitua newvalue pelo que você deseja colocar no item da lista. Por exemplo, dê uma olhada neste código:

#Crie uma lista de cadeias (nomes).
alunos = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
alunos [3] = "Hobart"
imprimir (alunos)

Quando você executa esse código, a saída é a seguinte, porque o nome de Anita foi alterado para Hobart.

['Mark', 'Amber', 'Todd', 'Hobart', 'Sandy']

Combinando listas Python

Se você tiver duas listas que deseja combinar em uma única lista, use a função extend () com a sintaxe:

original_list.extend (adicional_items_list)

No seu código, substitua original_list pelo nome da lista à qual você adicionará novos itens da lista. Substitua additional_items_list pelo nome da lista que contém os itens que você deseja adicionar à primeira lista. Aqui está um exemplo simples usando listas denominadas list1 e list2. Após executar list1.extend (list2), a primeira lista contém os itens de ambas as listas, como você pode ver na saída da instrução print () no final.

# Crie duas listas de nomes.
list1 = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
list2 = ["Huey", "Dewey", "Louie", "Nader", "Bubba"]

# Adicione nomes da lista2 à lista1.
list1.extend (list2)

# Imprimir lista 1.
imprimir (lista1)

['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake', 'Huey', 'Dewey', 'Louie', 'Nader', 'Bubba']

Parcheesi fácil, não?

Removendo itens da lista Python

O Python oferece um método remove () para que você possa remover qualquer valor da lista. Se o item estiver na lista várias vezes, somente a primeira ocorrência será removida. Por exemplo, o código a seguir mostra uma lista de letras com a letra C repetida algumas vezes. Em seguida, o código usa letters.remove ("C") para remover a letra C da lista:

# Remova "C" da lista.
letters.remove ("C")

#Mostrar a nova lista.
impressão (letras)

Quando você realmente executa esse código e depois imprime a lista, verá que apenas a primeira letra C foi removida:

['A', 'B', 'D', 'C', 'E', 'C']

Se você precisar remover todo um item, poderá usar um loop while para repetir o .remove enquanto o item ainda permanecer na lista. Por exemplo, esse código repete o .remove enquanto o "C" ainda estiver na lista.

#Crie uma lista de strings.
letras = ["A", "B", "C", "D", "C", "E", "C"]

Se você deseja remover um item com base em sua posição na lista, use pop () com um número de índice em vez de remove () com um valor. Se você deseja remover o último item da lista, use pop () sem um número de índice.

Por exemplo, o código a seguir cria uma lista, uma linha remove o primeiro item (0) e outra remove o último item (pop () sem nada entre parênteses). A impressão da lista mostra que esses dois itens foram removidos:

#Crie uma lista de strings.
letras = ["A", "B", "C", "D", "E", "F", "G"]
 
#Remova o primeiro item.
letters.pop (0)
#Remova o último item.
letters.pop ()
 
#Mostrar a nova lista.
impressão (letras)

A execução do código mostra que o surgimento do primeiro e do último itens funcionou:

['B', 'C', 'D', 'E', 'F']

Quando você retira () um item da lista, pode armazenar uma cópia desse valor em alguma variável. Por exemplo, esta imagem mostra o mesmo código que acima. No entanto, ele armazena cópias do que foi removido nas variáveis ​​denominadas first_removed e last_removed. No final, ele imprime a lista Python e também mostra quais letras foram removidas.

remover itens da lista Python

O Python também oferece um comando del (abreviação de delete) que exclui qualquer item de uma lista com base em seu número de índice (posição). Mas, novamente, você deve se lembrar que o primeiro item é zero. Então, digamos que você execute o código a seguir para excluir o item número 2 da lista:

# Crie uma lista de strings.
letras = ["A", "B", "C", "D", "E", "F", "G"]
 
# Remova o item sub 2.
del letras [2]
 
impressão (letras)

A execução desse código mostra a lista novamente, da seguinte maneira. A letra C foi excluída, que é o item correto para excluir porque as letras são numeradas 0, 1, 2, 3 e assim por diante.

['A', 'B', 'D', 'E', 'F', 'G']

Você também pode usar del para excluir uma lista inteira. Apenas não use colchetes e o número do índice. Por exemplo, o código que você vê abaixo cria uma lista e a exclui. Tentar imprimir a lista após a exclusão causa um erro, porque a lista não existe mais quando a instrução print () é executada.

excluir lista Python

Limpando uma lista Python

Se você deseja excluir o conteúdo de uma lista, mas não a lista em si, use .clear (). A lista ainda existe; no entanto, ele não contém itens. Em outras palavras, é uma lista vazia. O código a seguir mostra como você pode testar isso. A execução do código exibe [] no final, o que permite que você saiba que a lista está vazia:

# Crie uma lista de strings.
letras = ["A", "B", "C", "D", "E", "F", "G"]
 
# Limpe a lista de todas as entradas.
letters.clear ()
 
# Mostre-me a nova lista.
impressão (letras)

[]

Contando quantas vezes um item aparece em uma lista Python

Você pode usar o método count () do Python para contar quantas vezes um item aparece em uma lista. Como com outros métodos de lista, a sintaxe é simples:

listname.count (x)

Substitua listname pelo nome da sua lista ex x pelo valor que você está procurando (ou pelo nome de uma variável que contém esse valor).

O código na imagem abaixo conta quantas vezes a letra B aparece na lista, usando um literal B entre parênteses de .count (). Esse mesmo código também conta o número de notas C, mas esse valor foi armazenado em uma variável apenas para mostrar a diferença na sintaxe. Ambas as contagens funcionaram, como você pode ver na saída do programa na parte inferior. Um foi adicionado para contar os F‘s, sem usar nenhuma variável. Os F's foram contados diretamente no código que exibe a mensagem. Como não há notas F, isso retorna zero, como você pode ver na saída.

contar itens de lista do Python

Ao tentar combinar números e cadeias para formar uma mensagem, lembre-se de que você deve converter os números em cadeias usando a função str (). Caso contrário, você receberá um erro que lê algo como apenas concatenar str (não "int") para str. Nessa mensagem, int é a abreviação de número inteiro e str é a abreviação de string.

Localizando o índice de um item de lista Python

O Python oferece um método .index () que retorna um número indicando a posição, com base no número de índice, de um item em uma lista. A sintaxe é:

listname.index (x)

Como sempre, substitua listname pelo nome da lista que você deseja pesquisar. Substitua x o que você estiver procurando (como literal ou como nome de variável, como sempre). Obviamente, não há garantia de que o item esteja na lista e, mesmo que esteja, não há garantia de que o item esteja na lista apenas uma vez. Se o item não estiver na lista, ocorrerá um erro. Se o item estiver na lista várias vezes, o índice do primeiro item correspondente será retornado.

A imagem a seguir mostra um exemplo em que o programa trava na linha f_index = grade.index (look_for) porque não há F na lista.

Índice de itens da lista Python

Uma maneira fácil de contornar esse problema é usar uma instrução if para verificar se um item está na lista antes de tentar obter seu número de índice. Se o item não estiver na lista, exiba uma mensagem dizendo isso. Caso contrário, obtenha o número do índice e mostre-o em uma mensagem. Esse código é o seguinte:

# Crie uma lista de strings.
notas = ["C", "B", "A", "D", "C", "B", "C"]
# Decida o que procurar
look_for = "F"
# Veja se o item está na lista.
se procurar em notas:
    # Se estiver na lista, obtenha e mostre o índice.
    print (str (look_for) + "está no índice" + str (grade.index (look_for)))
outro:
    # Se não estiver na lista, nem tente o número do índice.
    print (str (look_for) + "não está na lista.")

Alfabetizando e classificando listas Python

O Python oferece um método sort () para classificar listas. Em sua forma mais simples, ele coloca os itens em ordem alfabética na lista (se forem strings). Se a lista contiver números, eles serão classificados do menor para o maior. Para uma classificação simples como essa, basta usar sort () com parênteses vazios:

listname.sort ()

Substitua listname pelo nome da sua lista. A imagem a seguir mostra um exemplo usando uma lista de seqüências de caracteres e uma lista de números. No exemplo, uma nova lista foi criada para cada um deles simplesmente atribuindo cada lista classificada a um novo nome de lista. Em seguida, o código imprime o conteúdo de cada lista classificada.

classificar lista Python

Se sua lista contiver seqüências de caracteres com uma mistura de letras maiúsculas e minúsculas e se os resultados da classificação não parecerem corretos, tente substituir .sort () por .sort (key = lambda s: s.lower ()) e, em seguida, executando o código novamente.

As datas são um pouco mais complicadas porque você não pode digitá-las como strings, como "31/12/2020". Eles precisam ser o tipo de dados da data para classificar corretamente. Isso significa usar o módulo datetime e o método date () para definir cada data. Você pode adicionar as datas à lista como faria com qualquer outra lista. Por exemplo, na linha a seguir, o código cria uma lista de quatro datas e o código está perfeitamente correto.

datas = [data.dt (2020,12,31), data.dt (2019,1,31), data.dt (2018,2,28), data.dt (2020,1,1)]

O computador certamente não se importará se você criar a lista dessa maneira. Mas se você quiser tornar o código mais legível para você ou para outros desenvolvedores, convém criar e anexar cada data, uma de cada vez, para que fique um pouco mais fácil ver o que está acontecendo e para que você não tenha para lidar com tantas vírgulas em uma linha de código. A imagem abaixo mostra um exemplo em que uma lista vazia chamada datelist foi criada:

datelist = []
exibir datas em Python

Em seguida, uma data de cada vez foi anexada à lista usando a sintaxe dt.date (ano, mês, dia).

Após a criação da lista, o código usa datelist.sort () para classificá-los em ordem cronológica (do mais recente ao mais recente). Você não precisa usar print (datelist) nesse código, porque esse método exibe as datas com as informações de tipo de dados incluídas, desta forma:

[datetime.date (2018, 2, 28), datetime.date (2019, 1, 31), datetime.date (2020, 1, 1), datetime.date (2020, 12, 31)]

Não é a lista mais fácil de ler. Portanto, em vez de imprimir a lista inteira com uma instrução print (), você pode percorrer cada data da lista e imprimir cada uma formatada com a string f% m /% d /% Y. Isso exibe cada data em sua própria linha em mm / dd / aaaa

Se você deseja classificar os itens na ordem inversa, coloque reverse = True entre parênteses sort () (e não esqueça de colocar a primeira letra em maiúscula). A imagem abaixo mostra exemplos de classificação das três listas em ordem decrescente (reversa) usando reverse = True.

informações de classificação na lista Python ao contrário

Invertendo uma lista Python

Você também pode reverter a ordem dos itens em uma lista usando o método .reverse. Isso não é o mesmo que classificar no sentido inverso, porque quando você classifica no sentido inverso, você ainda classifica: Z – A para cadeias de caracteres, do maior para o menor para os números, do mais recente para as datas. Ao reverter uma lista, basta reverter os itens da lista, independentemente da ordem deles, sem tentar classificá-los de nenhuma maneira.

O código a seguir mostra um exemplo no qual você inverte a ordem dos nomes na lista e depois imprime a lista. A saída mostra os itens da lista revertidos em sua ordem original:

# Crie uma lista de strings.
nomes = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
# Inverta a lista
names.reverse ()
# Imprimir a lista
print (nomes)
 
['Jake', 'Alberto', 'Hong', 'Lupe', 'Zara']

Copiando uma lista Python

Se você precisar trabalhar com uma cópia de uma lista, use o método .copy () para não alterar a lista original. Por exemplo, o código a seguir é semelhante ao código anterior, exceto que, em vez de reverter a ordem da lista original, você faz uma cópia da lista e a inverte. A impressão do conteúdo de cada lista mostra como a primeira lista ainda está na ordem original, enquanto a segunda lista é revertida:

# Crie uma lista de strings.
nomes = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
 
# Faça uma cópia da lista
backward_names = names.copy ()
# Inverta a cópia
backward_names.reverse ()
 
# Imprimir a lista
print (nomes)
print (backward_names)
 
['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake']
['Jake', 'Alberto', 'Hong', 'Lupe', 'Zara']

Para referências futuras, a tabela a seguir resume os métodos que você aprendeu.