Olá pessoal.
Não entendi muito bem porque utilizar range(len) no caso abaixo:
cadastro  = {chave: valor for item in range(len(coluna))}
Por que não é possível utilizar apenas o len?
Quando utilizar devorange(len)juntos?
Olá pessoal.
Não entendi muito bem porque utilizar range(len) no caso abaixo:
cadastro  = {chave: valor for item in range(len(coluna))}
Por que não é possível utilizar apenas o len?
Quando utilizar devorange(len)juntos?
Olá Gabriel!
A utilização do range(len) no exemplo que você mencionou está relacionada ao fato de que o range é uma função que retorna uma sequência de números. No caso específico do range(len), ele retorna uma sequência de números que vai de 0 até o valor de len, que é o tamanho da lista ou do objeto que você está percorrendo.
No exemplo que você citou, o range(len(coluna)) está sendo utilizado para criar um dicionário chamado cadastro, onde as chaves são os números retornados pelo range e os valores são definidos pelo loop for. 
Se você utilizar apenas o len, estará obtendo apenas o tamanho da lista ou do objeto, mas não uma sequência de números que vai de 0 até esse tamanho. Portanto, não seria possível utilizar apenas o len nesse caso.
Agora, nem sempre é necessário utilizar o range(len) juntos. Isso vai depender do que você precisa fazer no seu código. Em alguns casos, você pode precisar apenas do tamanho da lista ou do objeto, sem a necessidade de percorrer cada um dos elementos. Nesses casos, você pode utilizar apenas o len. 
Porém, se você precisa percorrer cada um dos elementos e também precisa saber a posição de cada um deles, aí sim é necessário utilizar o range(len) para obter essa sequência de números.
Espero ter ajudado e bons estudos!