Como inverter a seqüência de caracteres usando listas de python

0

Pergunta

Encontrei este pedaço de código a partir de uma questão sobre a inversão de seqüências de caracteres em python, mas alguém por favor pode interpretar em inglês simples? Por favor note que eu ainda sou novo para python e só aprendeu como usar loops e funções de ontem :/ então eu realmente não posso colocar isso em palavras me provocar meu entendimento, não há ainda.

de qualquer maneira, aqui está o código:

def reverse_string(string):
    new_strings = [] 
    index = len(string) 
    while index:  
        index -= 1                       
        new_strings.append(string[index]) 
    return ''.join(new_strings) 

print(reverse_string('hello'))
list python string
2021-11-24 04:07:22
3

Melhor resposta

4

Certamente por saber o que ele faz, você pode descobrir o código. No while loop, o index valor começa a partir do final da seqüência de caracteres e em contagem decrescente para 0. Em cada etapa, adiciona caracteres (novamente, a partir do fim) para o fim da lista está a criar. Finalmente, ele combina com a lista em uma string.

Assim, dado 'abcd', a lista é construído:

'abcd'  #3 -> ['d']
'abcd'  #2 -> ['d','c']
'abcd'  #1 -> ['d','c','b']
'abcd'  #0 -> ['d','c','b','a']
2021-11-24 04:10:52
1

Bem, basicamente, o de obter o comprimento da cadeia de caracteres com o len o método. Que irá retornar um valor inteiro que representa quanto tempo essa seqüência.

Em seguida, eles usam o comprimento da cadeia de caracteres e eficaz iterar para baixo, para zero em um while loop. Usando o -= o operador.

A cada iteração, o que significa que cada volta do loop) ele vai tirar de comprimento até atingir zero.

Então vamos usar hello como um exemplo de entrada e passar por isso juntos.

reverse_string('hello') é como devemos chamar o método, feito em print a indicação do seu código.

Nós, em seguida, introduza a função e de efectuar estes passos:

  1. Vamos criar uma nova matriz vazia chamado new_strings.
  2. Encontramos o comprimento da cadeia inicial hello que devolve-nos 5. O que significa que agora index é igual a 5.
  3. Podemos criar um loop while que continua indo até index não está mais usando while(index): - um while loop como este trata de uma 0 valor falsy e terminará após chegar a esta. Portanto, quando index é 0 o ciclo irá parar.
  4. A primeira linha deste loop executa index -= 1 que é o mesmo que escrever index = index - 1 assim, o primeiro ciclo através de nós chegar index = 5 - 1 e agora index é igual a 4.
  5. Porque Python, em seguida, permite-nos o acesso a character de uma cadeia de caracteres usando string[index] (e como isso funciona a partir de 0 -> n) a realização de hello[4] na verdade irá nos dar o caráter o.
  6. Podemos também acrescentar a este personagem para a matriz new_strings o que significa que, como nós atravessamos o iterações para chegar a zero, ela vai adicionar cada personagem para trás, para esta matriz, dando-nos ['o', 'l', 'l', 'e', 'h']
  7. Desde que o índice de agora é zero deixamos o loop e executar um join operação na matriz, mais uma vez, criar uma seqüência de caracteres. O comando ''.join(new_strings) significa que nós desejamos juntar-se a matriz, já teve sem um separador. Se tivéssemos feito '#'.join(new_strings) nós, em vez disso, poderia ter chegado o#l#l#e#h em vez de olleh.

Espero que esta resposta dá-lhe alguma clareza.

2021-11-24 04:20:49

ah isso esclarece minhas dúvidas luta que a última linha que eu estava prestes a perguntar. Obrigado pela explicação :)
user17415509

Sem preocupação. Eu estou feliz que eu poderia estar a serviço. Tim Roberts é certo que muitas dessas coisas podem ser entendidas por meio de fundamentos. Eu sugiro que, sempre que você se depara com código de você não entender, tente a pesquisa de linguagem documentação para o método/operador. Mesmo se você não entender isso no início, acostumar-se a isso e tentando entender o que ele irá atendê-lo muito bem, movendo-se para frente.
Johan Jarvi

Como um exemplo str.join() documentação que faz parte do Python embutido tipos de documentação pode provar ser muito útil mais tarde, mas eu posso entender como ele vai parecer esmagadora e confuso neste ponto, mas é muito bom ter o hábito de encontrar estes recursos de aprendizagem e como interpretá-los.
Johan Jarvi
0

Com certeza, é muito simples programa. Você deve reffer seqüência de métodos e cadeia de indexação em python para obter uma ideia clara. Deixe-me explicar isso em deatial.

de impressão(reverse_string('olá'))//A função de impressão é chamar outra função reverse_string e passar o argumento"olá".

def reverse_string(string):// argumento "olá" é armazenado na variável cadeia na reverse_string função.

**new_strings = []** // created a new empty list
**index = len(string)** // len function returns the length of the argument 
                           passed to the function. len("hello")=5 and assigned 
                           to index. index=5.

enquanto o índice: // loop while exicute até que a condição falsa .Neste exemplo quando o index =0.na seqüência inicial da indexação, a partir de 0 .Para exemplo. string[0]=h,string[1]=e,string[2]=l,string[3]=l,string[4]=o.

    **index -= 1**  //Note the last letter 'o' is in string[4] and the len 
                      function returned 5 so we need to decrement index variable 
                      to 4 so that it will pointing to string[4]=o                     
  

new_strings.append(string[index]) // append string[4] que é o e assim por diante ... retornar ".junte-se(new_strings)

2021-11-24 05:28:44

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................