Как изменить строку с помощью списков python

0

Вопрос

Я нашел этот фрагмент кода из связанного вопроса об изменении строк в python, но может ли кто-нибудь, пожалуйста, интерпретировать его на простом английском языке? Пожалуйста, обратите внимание, что я все еще новичок в python и только вчера научился использовать циклы и функции while :/ поэтому я сам не могу выразить это словами, потому что мое понимание еще не совсем достигнуто.

в любом случае, вот код:

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

Лучший ответ

4

Конечно, зная, что он делает, вы можете разгадать код. В while петля, то index значение начинается с конца строки и отсчитывается до 0. На каждом шаге он добавляет этот символ (опять же, начиная с конца) в конец списка, который он создает. Наконец, он объединяет список в строку.

Итак, учитывая "abcd", список строится:

'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

Ну, в принципе, получить длину строки с помощью len метод. Который вернет вам целое значение, представляющее длину этой строки.

Затем они используют длину этой строки и эффективно выполняют итерацию до нуля в while петля. Используя -= оператор.

Каждая итерация (то есть каждый раз по циклу) будет уменьшать длину до тех пор, пока она не достигнет нуля.

Так что давайте использовать hello в качестве примера введите и пройдите через это вместе.

reverse_string('hello') это то, как мы бы назвали метод, выполненный в print изложение вашего кода.

Затем мы вводим функцию и выполняем следующие действия:

  1. Мы создаем новый пустой массив под названием new_strings.
  2. Мы находим длину начальной строки hello что возвращает нам 5. Это означает, что теперь index равно 5.
  3. Мы создаем цикл while, который продолжается до тех пор, пока index больше не использует while(index): - цикл while, подобный этому, относится к 0 значение как falsy и прекратится по достижении этого. Поэтому, когда index является 0 цикл остановится.
  4. Первая строка этого цикла выполняет index -= 1 что то же самое, что писать index = index - 1 итак, самый первый цикл, через который мы проходим, мы получаем index = 5 - 1 а потом, сейчас index равно 4.
  5. Потому что Python затем позволяет нам получить доступ к character строки с использованием string[index] (и потому, что это работает с 0 -> n) выполнение hello[4] на самом деле даст нам характер o.
  6. Мы также добавляем этот символ в массив new_strings это означает, что по мере того, как мы проходим итерации, чтобы достичь нуля, он будет добавлять каждый символ в обратном направлении в этот массив, давая нам ['o', 'l', 'l', 'e', 'h']
  7. Поскольку индекс теперь равен нулю, мы выходим из цикла и выполняем join операция над массивом для повторного создания строки. Команда ''.join(new_strings) означает, что мы хотим присоединиться к массиву, который у нас был ранее, без разделителя. Если бы мы сделали '#'.join(new_strings) вместо этого мы бы получили o#l#l#e#h вместо olleh.

Я надеюсь, что этот ответ даст вам некоторую ясность.

2021-11-24 04:20:49

ах, это проясняет мои вопросы по поводу последней строчки, которую я собирался задать. Спасибо за объяснение :)
user17415509

Вообще никаких забот. Я рад, что смог быть вам полезен. Однако Тим Робертс прав; многие из этих вещей можно понять, изучив основные принципы. Я предлагаю, чтобы всякий раз, когда вы натыкаетесь на код, который вы не понимаете, попробуйте поискать языковую документацию для метода/оператора. Даже если вы не понимаете этого с самого начала, привыкание к этому и попытка понять это очень хорошо послужат вам в дальнейшем.
Johan Jarvi

В качестве примера документация str.join (), которая является частью документации по встроенным типам Python, может оказаться очень полезной позже, но я могу понять, как это будет казаться ошеломляющим и запутанным на данный момент, но очень хорошо привыкнуть находить эти ресурсы и учиться их интерпретировать.
Johan Jarvi
0

Конечно, это очень простая программа. Вам следует пересмотреть строковые методы и индексирование строк в python, чтобы получить четкое представление. Позвольте мне объяснить это в deatial.

print(reverse_string('привет'))//Функция печати вызывает другую функцию reverse_string и передает аргумент"привет".

def reverse_string(строка):// Аргумент "привет" хранится в переменной string в функции reverse_string.

**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.

в то время как индекс: // в то время как цикл продолжается до тех пор, пока условие не станет ложным .В этом примере, когда индекс =0.in строка индексирования начинается с 0 . Например. строка[0]=h,строка[1]=e,строка[2]=l,строка[3]=l,строка[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.добавить(строка[индекс]) // добавить строку[4], которая является o и так далее ... возврат ".присоединяйтесь(новые строки)

2021-11-24 05:28:44

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................