Você pode ler a documentação da lang e torrar um pouco a mente em cada comando, não somente ler e entender, tenta imaginar como você pode usar aquilo, não somente da forma que te foi ensinado, mas tenta responder: Posso usar assim?, e assim?, etc..
Recetemente no codewars eu me deparei com uma solução simplismente genial..
Desafio: Você recebe um inteiro positivo, e retorna 'True' ou 'False' caso seja impar ou par . A solução que a maioria iria escrever seria:
def check(value):
return True if value%2 == 0 else 'False'
A galera mais esperta escreveu algo assim:
def check(value):
return bool(value%2)
#os caras do lambda
check = lambda v: bool(v%2)
Mas teve um cara que foi simplismente genial, em termos de simplicidade e boas práticas ele não levou muito crédito, porém, em conhecer a linguagem, o cara foi fera.
def check(value):
return[True,False][value%2]
Eu considero isso genial, por que ele sabe que x%x vai retornar 0 ou 1, e usou isso para acessar o índice correspondente no array, ele "quebrou" a forma como eu via o operador de modulo. E me fez perceber a importância de se aprofundar em cada detalhe da lang.