Tentando entender o algoritmo de ordenação por inserção

Estou lendo alguns livros sobre Python, estruturas de dados e análise e design de algoritmos. Eu quero realmente entender as vantagens e desvantagens da codificação e me tornar um programador eficiente. É difícil pedir que o livro esclareça, daí a minha pergunta sobre o stackoverflow. Estou realmente achando que algoritmos e recursões são desafiadores ... Publiquei algum código (tipo de inserção) abaixo que estou tentando entender exatamente o que está acontecendo. Geralmente entendo o que deveria acontecer, mas não estou realmente entendendo como e por qu

De tentar analisar partes do código no Python Idle, sei que:

key (holds variables) = 8, 2, 4, 9, 3, 6

e essa

i (holds the length) = 7 ( 1, 2, 3, 4, 5, 6, 7)

Não sei por que 1 é usado na primeira linha: range (1, len (mylist)). Qualquer ajuda é apreciad

mylist = [8, 2, 4, 9, 3, 6]

for j in range(1,len(mylist)):
    key = mylist[j]
    i = j
    while i > 0 and mylist[i-1] > key:
        mylist[i] = mylist[i - 1]
        i -= 1
        mylist[i] = key

questionAnswers(7)

yourAnswerToTheQuestion