Python

Во втором коде программы разобрался, а в предыдущем нет.

Вот две программы, образующие из слова "Don't panic!" в слово "on tap":

Первый код, процесс действия которого я не понял как он образует в "on tap":

pharse = "Don't panic!"
plist = list(pharse)
print(pharse)
print(plist)

for i in range(4):
plist.pop()
plist.pop(0)
plist.remove("'")
plist.extend([plist.pop(), plist.pop()])
plist.insert(2, plist.pop(3))

new_phrase = ' '.join(plist)
print(plist)
print(new_phrase)

И вот вторая программа работающая со списком, процесс которой мне понятен преобразования слова "on tap" из слова "Don't panic!":

pharse = "Don't panic!"
plist = list(pharse)
print(pharse)
print(plist)

new_phrase = '',join(plist[1:3])
new_phrase = new_phrase + ''.join([plist[5], plist[4], plist[7], plist[6]])

print(plist)
print(new_phrase)

Вот мне интересно по поводу первой программы, я всё правильно понял:
plist.pop(0) - отвечает за срез "D" из "Don't panic!"?
remove - отвечает за удаление?
Мне не понятно оствается в коде первой программы "for i in range(4):" и "plist.extend([plist.pop(), plist.pop()])" - как они отвечают за механизм преобразования из "Don't panic!" в "on tap", как работает процесс замены местами букв "p" и "a" в коде первой программы?
В первой программе, код работает следующим образом:

pharse = "Don't panic!" - задается исходная фраза "Don't panic!".

plist = list(pharse) - преобразуется фраза в список, где каждый символ становится элементом списка. В данном случае, список будет содержать следующие элементы: ['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c', '!'].

Затем, на экран выводится исходная фраза и список: print(pharse) и print(plist).

Далее следует цикл for i in range(4):. Он будет выполняться 4 раза.

Внутри цикла происходят следующие операции:

plist.pop() - удаляет последний элемент списка. При первой итерации будет удален элемент '!', при второй - 'c', при третьей - 'i', при четвертой - 'n'.
plist.pop(0) - удаляет первый элемент списка. При первой итерации будет удален элемент 'D', при второй - 'o', при третьей - "'", при четвертой - 't'.
plist.remove("'") - удаляет символ "'" из списка.
plist.extend([plist.pop(), plist.pop()]) - извлекает два элемента из списка (последний и предпоследний) и добавляет их в конец списка.
plist.insert(2, plist.pop(3)) - извлекает элемент с индексом 3 из списка и вставляет его на позицию с индексом 2.
После выполнения цикла, список plist будет иметь следующее содержимое: ['p', 'a', 'n', ' ', 't', 'a', 'p'].

Далее, список преобразуется обратно в строку с использованием пробелов между элементами: new_phrase = ' '.join(plist). Таким образом, new_phrase будет содержать строку "p a n t a p".

На экран выводится измененный список и полученная фраза: print(plist) и print(new_phrase).

Таким образом, первая программа работает следующим образом: она использует операции с удалением, добавлением и перемещением элементов в списке, чтобы изменить порядок исходных символов и получить фразу "on tap". Однако, код не является чистым и понятным, и его работа может быть запутанной.
Александр Зубарев
Александр Зубарев
407
Лучший ответ
Роман Любишкин Большое спасибо.
Добавь print(plist) между каждым методом, и увидишь что происходит. А что именно делают методы можно загуглить.
pop - удалить и получить элемент по индексу
remove - удалить элемент по значению
extend - запихнуть список в конец списка
Yunusov Sergey
Yunusov Sergey
34 941