range(len(x))
Em Python, geralmente usamos um loop for
para iterar sobre um objeto iterável. Um loop for
em Python usa iteração baseada em coleção, ou seja, Python atribui o próximo item de um iterável à variável de loop em cada iteração. O caso de uso usual de um loop for
é o seguinte:
values = ["a", "b", "c"] for value in values: print(value) # a # b # c
index = 0 for value in values: print(index, value) index += 1 # 0 a # 1 b # 2 c
ou outra maneira comum de fazer isso é usando range(len(x))
:
for index in range(len(values)): value = values[index] print(index, value) # 0 a # 1 b # 2 c
No entanto, há uma maneira mais fácil e pythônica de iterar sobre objetos iteráveis usando enumerate()
. Ele é usado em um loop for
quase da mesma maneira que você usa da maneira usual, mas em vez de colocar o objeto iterável diretamente depois in
loop for
, ou colocá-lo como range(len(values))
, você o coloca dentro os parênteses de enumerate()
como mostrado abaixo:
for count, value in enumerate(values): print(count, value) # 0 a # 1 b # 2 c
Também podemos definir um argumento start
para enumerate()
conforme mostrado abaixo:
for count, value in enumerate(values, start=1): print(count, value) # 1 a # 2 b # 3 c
A função enumerate()
retorna duas variáveis:
Assim como as variáveis de loop em um loop for
, as variáveis de loop podem ter qualquer nome, por exemplo, podemos chamá-las de index
e value
e elas ainda funcionarão. enumerate()
é mais eficiente que um loop for
, pois evita que você tenha que lembrar de acessar o valor dentro do loop e usá-lo corretamente e também lembrar de avançar o valor da variável do loop, tudo é tratado automaticamente pelo Python .
newList = [ expression(element) for element in oldList if condition ]
# Using list comprehension to iterate through loop List = [character for character in 'HackerNoon'] # Displaying list print(List) # Output # ['H', 'a', 'c', 'k', 'e', 'r', 'N', 'o', 'o', 'n']
sorted()
A função sorted()
do Python classifica os elementos de um objeto iterável em uma ordem específica (crescente ou decrescente) e os retorna como uma lista classificada. Ele pode ser usado para classificar uma sequência (string, tupla, lista) ou coleção (conjunto, dicionário, conjunto congelado) ou qualquer outro iterador.
A sintaxe da função sorted()
é a seguinte:
sorted(iterable, key=None, reverse=False)
A função sorted()
leva no máximo três parâmetros:
list_inp = [100, 75, 100, 20, 75, 12, 75, 25] set_res = set(list_inp) print("The unique elements of the input list using set():\n") list_res = (list(set_res)) for item in list_res: print(item)
The unique elements of the input list using set(): 25 75 100 20 12
myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print("The given list is:", myList) mygen = (element ** 2 for element in myList if element % 2 == 0) print("Elements obtained from the generator are:") for ele in mygen: print(ele)
The given list is: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Elements obtained from the generator are: 4 16 36 64 100
.get()
e .setdefault()
O método .setdefault()
permite definir dict[key]=default
se a chave ainda não estiver no dict.
A sintaxe de .setdefault()
se parece com o seguinte:
dict.setdefault(key, default=None)
Aqui está um trecho de código de exemplo para entender como usar .setdefault()
:
a_dictionary = {"a": 1, "b": 2, "d": 4} a_dictionary.setdefault("c", 3) print(a_dictionary)
{'a': 1, 'b': 2, 'd': 4, 'c': 3}
A mesma coisa também pode ser obtida usando o método .get()
passando um valor padrão para a chave, como você pode ver abaixo:
a_dictionary = {"a": 1, "b": 2, "d": 4} print(a_dictionary.get("c", 3)) print(a_dictionary)
3 {'a': 1, 'b': 2, 'd': 4}
collections.Counter
As coleções de importação disponibilizam o material nas coleções como:
import collections
from collections import Counter
import collections c = collections.Counter('abcdaab') for letter in 'abcde': print '%s : %d' % (letter, c[letter])
a : 3 b : 2 c : 1 d : 1 e : 0
Como o nome “f-string” diz, são strings literais que possuem um f no início e chaves contendo expressões que serão substituídas por seus valores em tempo de execução e depois formatadas usando o protocolo __format__
.
name = "Eric" age = 74 print(f"Hello, {name}. You are {age}.") # 'Hello, Eric. You are 74.'
.join()
Em Python, podemos usar o método .join()
para concatenar uma lista de strings em uma única string. A sintaxe usual para este método é a seguinte:
'String to insert'.join([List of strings])
Ele pode ser usado de várias maneiras -- se você usar a string vazia ““
, [List of strings] é simplesmente concatenada, e se você usar uma vírgula, uma string delimitada por vírgula é criada. Quando o caractere de nova linha \n
é usado, uma nova linha é acrescentada após cada string. Veja o exemplo abaixo:
l = ['aaa', 'bbb', 'ccc'] s = ''.join(l) print(s) # aaabbbccc s = ','.join(l) print(s) # aaa,bbb,ccc s = '-'.join(l) print(s) # aaa-bbb-ccc s = '\n'.join(l) print(s) # aaa # bbb # ccc
{**d1, **d2}
(Python 3.5+) A maneira mais fácil de mesclar dicionários é usando o operador de descompactação ( **
). A sintaxe desse método se parece com isso:
{**dict1, **dict2, **dict3}
d1 = {'k1': 1, 'k2': 2} d2 = {'k3': 3, 'k4': 4} print({**d1, **d2}) # {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4}
if x in list
colors = ["red", "green", "blue"] c = "red" # cumbersome and error-prone if c == "red" or c == "green" or c == "blue": print("is main color")
colors = ["red", "green", "blue"] c = "red" # better: if c in colors: print("is main color")