Listas

Listas#

Listas e tuplas podem conter vários valores, o que facilita a escrita de programas que lidam com grandes quantidades de dados. E como as próprias listas podem conter outras listas, você pode usá-las para organizar dados em estruturas hierárquicas.

Uma lista é um valor que contém vários valores em uma sequência ordenada.

Uma lista começa com um colchete de abertura e termina com um colchete de fechamento, [ ] . Os valores dentro da lista também são chamados de itens . Os itens são separados por vírgulas (ou seja, são delimitados por vírgulas ). Por exemplo:

[1, 2, 3]
['cat', 'bat', 'rat', 'elephant']
['hello', 3.1415, True, None, 42]
spam = ['cat', 'bat', 'rat', 'elephant']
spam

Alt text

spam[0]
'Hello, ' + spam[0]
'The ' + spam[1] + ' ate the ' + spam[0] + '.'
spam[10000] #não aceita indexadores fora do limite 
spam[1.0] #não aceita indexadores que não sejam inteiros
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[13], line 1
----> 1 spam[1.0] #não aceita indexadores que não sejam inteiros

TypeError: list indices must be integers or slices, not float
spam[int(1.0)]
'bat'
spam = [['cat', 'bat'], [10, 20, 30, 40, 50]]
spam[0]
['cat', 'bat']
spam[0][1]
'bat'
spam[1][4]
50
spam = ['cat', 'bat', 'rat', 'elephant']

#indexSpam = [0, 1, 2, 3] esquerda para direita

#indexSpam = [-4, -3, -2, -1]
spam[-1]
'elephant'
'O ' + spam[-1] + 'tem medo do ' + spam[-3] + '.'
'O elephanttem medo do bat.'
'O ' + spam[3] + ' tem medo do ' + spam[1] + '.'
'O elephant tem medo do bat.'
spam[1:3]
['bat', 'rat']
spam[:2]
['cat', 'bat']
len(spam)
4
spam
['cat', 'bat', 'rat', 'elephant']
spam[1] = 'aardvark'
spam
['cat', 'aardvark', 'rat', 'elephant']
[1, 2, 3, 4] + ['A', 'B', 'C']
[1, 2, 3, 4, 'A', 'B', 'C']
['X', 'Y', 'Z'] * 3
spam = [1, 2, 3]
spam = spam + ['A', 'B', 'C']
spam
[1, 2, 3, 'A', 'B', 'C']
del spam[2]
spam
[1, 2, 'B', 'C']

Em vez de usar diversas variáveis ​​repetitivas, você pode usar uma única variável que contenha um valor de lista.

catNames = []
while True:
    print('Enter the name of cat ' + str(len(catNames) + 1) +
      ' (Or enter nothing to stop.):')
    name = input()
    if name == '':
        break
    catNames = catNames + [name]  # list concatenation
print('The cat names are:')
for item in catNames:
    print('  ' + item)
Enter the name of cat 1 (Or enter nothing to stop.):
Enter the name of cat 2 (Or enter nothing to stop.):
Enter the name of cat 3 (Or enter nothing to stop.):
Enter the name of cat 4 (Or enter nothing to stop.):
The cat names are:
  miau1
  miau2
  miau3

https://autbor.com/allmycats2/

Uma técnica comum do Python é usar range(len( someList )) com um loop for para iterar sobre os índices de uma lista.

suprimentos = ['pens', 'staplers', 'flamethrowers', 'binders']
for i in range(len(suprimentos)):
    print('Indice ' + str(i) + ' em suprimentos é: ' + suprimentos[i])
Indice 0 em suprimentos é: pens
Indice 1 em suprimentos é: staplers
Indice 2 em suprimentos é: flamethrowers
Indice 3 em suprimentos é: binders

Você pode determinar se um valor está ou não em uma lista com os operadores in e not in . Como outros operadores, in e not in são usados ​​em expressões e conectam dois valores: um valor a procurar em uma lista e a lista onde ele pode estarencontrado. Essas expressões serão avaliadas como um valor booleano.

'howdy' in ['hello', 'hi', 'howdy', 'heyas']
True
spam = ['hello', 'hi', 'howdy', 'heyas']
'cat' in spam
False
'howdy' not in spam
False
'cat' not in spam
True
myPets = ['Zophie', 'Pooka', 'Fat-tail']
print('Enter a pet name:')
name = input()
if name not in myPets:
    print('I do not have a pet named ' + name)
else:
    print(name + ' is my pet.')
Enter a pet name:
Pooka is my pet.

Atribuição múltipla (tecnicamente chamado de descompactação de tupla ) é um atalho que permite atribuir múltiplas variáveis ​​com os valores em uma lista em uma linha de código

cat = ['fat', 'gray', 'loud']
size, color, disposition = cat
size
'fat'
color
'gray'

Em vez de usar a técnica range(len( someList )) com um loop for para obter o índice inteiro dos itens na lista, você pode chamar a função enumerate() . Em cada iteração do loop, enumerate() retornará dois valores: o índice do item na lista e o item na própria lista.

suprimentos = ['canetas', 'grampeadores', 'apagadore', 'fichários']
for index, suprimento in enumerate(suprimentos):
    print('Índice ' + str(index) + ' em suprimentos é: ' + suprimento)
Índice 0 em suprimentos é: canetas
Índice 1 em suprimentos é: grampeadores
Índice 2 em suprimentos é: apagadore
Índice 3 em suprimentos é: fichários

O módulo random possui algumas funções que aceitam listas de argumentos. A função random.choice() retornará um item selecionado aleatoriamente da lista.

import random
pets = ['Cachorro', 'Gato', 'Esquilo']
random.choice(pets)
'Gato'

A função random.shuffle() reordenará os itens de uma lista. Esta função modifica a lista existente, em vez de retornar uma nova lista.

people = ['Alice', 'Bob', 'Carol', 'David']
random.shuffle(people)
people
['David', 'Alice', 'Carol', 'Bob']
import random
a1 = input('Digite o nome do aluno 1: ')
a2 = input('Digite o nome do aluno 2: ')
a3 = input('Digite o nome do aluno 3: ')
a4 = input('Digite o nome do aluno 4: ')
lista = [a1, a2, a3, a4]
sorteio = random.choice(lista)
print('O aluno sorteado foi:', sorteio)
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
Cell In[71], line 2
      1 import random
----> 2 a1 = input('Digite o nome do aluno 1: ')
      3 a2 = input('Digite o nome do aluno 2: ')
      4 a3 = input('Digite o nome do aluno 3: ')

File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\ipykernel\kernelbase.py:1202, in Kernel.raw_input(self, prompt)
   1200     msg = "raw_input was called, but this frontend does not support input requests."
   1201     raise StdinNotImplementedError(msg)
-> 1202 return self._input_request(
   1203     str(prompt),
   1204     self._parent_ident["shell"],
   1205     self.get_parent("shell"),
   1206     password=False,
   1207 )

File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\ipykernel\kernelbase.py:1245, in Kernel._input_request(self, prompt, ident, parent, password)
   1242 except KeyboardInterrupt:
   1243     # re-raise KeyboardInterrupt, to truncate traceback
   1244     msg = "Interrupted by user"
-> 1245     raise KeyboardInterrupt(msg) from None
   1246 except Exception:
   1247     self.log.warning("Invalid Message:", exc_info=True)

KeyboardInterrupt: Interrupted by user
from random import choice
nome1 = str(input('Digite o primeiro nome: '))
nome2 = str(input('Digite o segundo nome: '))
nome3 = str(input('Digite o terceiro nome: '))
nome4 = str(input('Digite o quarto nome: '))
lista = [nome1,nome2,nome3,nome4]
escolha = choice(lista)
print('O nome escolhido foi {}  '.format(escolha))
O nome escolhido foi paulo  
import random
grupos = []
grupo = input('Insira um grupo: ')
grupos.append(grupo)
while grupo:
   grupo = input('Insira um grupo: ')
   grupos.append(grupo)
random.shuffle(grupos) 
print(grupos)
['grupo2', 'grupo3', '', 'gupo1']

Operadores de Atribuição#

Alt text

spam = 42
spam = spam + 1
spam
43
spam = 42
spam += 1
spam
43
spam = 'Olá,'
spam += 'mundo!'
spam
'Olá,mundo!'

EXCEÇÕES ÀS REGRAS DE INDENTAÇÃO EM PYTHON

Listas podem abranger várias linhas no arquivo de código-fonte. O recuo destas linhas não importa; Python sabe que a lista não está terminada até que veja o colchete final.

spam = ['maçãs',
    'laranjas',
                    'bananas',
'gatos']
print(spam)
['maçãs', 'laranjas', 'bananas', 'gatos']