Na figura, você vê a tabuada de multiplicação usual, que eu acho que é familiar para todos.
Não há nada de especial nisso, exceto que todo o algoritmo para construí-lo é compactado em uma cadeia Python padrão de 79 caracteres (consulte
PEP8 ). Quem se importa, bem-vindo ao gato.
Para começar, vale a pena responder à pergunta que surgiu entre muitos: "Por que isso?". Tudo surgiu de dois fatores: primeiro, por recomendação urgente de uma pessoa boa, fiz um estudo aprofundado do Python e, segundo, gosto do conceito de
demoscene . O resultado foi um desejo de escrever (é claro, falando em voz alta) algo muito pequeno (idealmente em uma linha), mas visual, usando os recursos da codificação Python para tudo isso. Decidi exibir a tabuada de multiplicação.
Vale a pena notar que estou escrevendo em Python3.7. As versões sob 3.6 não funcionarão devido à falta de suporte para as linhas f e, como resultado, o script de trabalho excederá 79 caracteres.
Como oito linhas se transformaram em uma
Para começar, escrevi um código que exibe a tabela de multiplicação, absolutamente sem se importar com a compactação:

Listagemdef MultiTabl(): tabl = '' for y in range(1,11): for x in range(1,11): tabl += f'{x*y}\t' tabl += f'\n' return tabl
Você pode gerar valores de tabela usando geradores e deixar os loops para descompactar listas. A desvantagem dessa abordagem foi um número maior de linhas:

Listagem def MultiTabl(): nums = [[x*y for x in range(1,11)] for y in range(1,11)] tabl = '' for line in nums: for item in line: tabl += f'{item}\t' tabl += f'\n' return tabl
Você também pode fornecer ao gerador um arranjo de guias ('\ t') usando as linhas f:
nums = [[f'{x*y}\t' for x in range(1,11)] for y in range(1,11)]
Se a lista extraída no primeiro ciclo for colada em uma string usando o método string join (), usando a atribuição paralela de variáveis e colocando o ciclo em uma linha, o tamanho do código será reduzido significativamente:

Listagem def MultiTabl(): nums, tabl = [[f'{x*y}\t' for x in range(1,11)] for y in range(1,11)], '' for line in nums: tabl += ''.join(line) + '\n' return tabl
E se você adicionar join () e '\ n' ao gerador:
def MultiTabl(): nums, tabl = [''.join([f'{x*y}\t' for x in range(1,11)])+'\n' for y in range(1,11)], '' for line in nums: tabl += line return tabl
Agora temos uma lista de strings à nossa disposição, e ela também pode ser colada usando join (), eliminando os loops:
def MultiTabl(): tabl = ''.join([''.join([f'{x*y}\t' for x in range(1,11)])+'\n' for y in range(1,11)]) return tabl
Bem, a opção prometida em uma linha (é claro, você não pode se livrar da impressão)
print( ''.join([''.join([f'{x*y}\t' for x in range(1,11)])+'\n' for y in range(1,11)]) )
Obviamente, os gurus do Python dirão: "O que é isso?", Mas vale a pena notar que essa abordagem não é óbvia para iniciantes.
Você não deve levar essa obra muito a sério, eu a escrevi como um aquecimento antes de um artigo grande; será ótimo se trouxer um sorriso e ótimo se for beneficiado.