Перейти к содержимому

Как поменять порядок слов в питоне

  • автор:

Изменить порядок слов Python

Всем привет! Есть ли библиотека Python, которая меняет порядок слов в предложении? Например у меня есть предложение:

21ис-3 1) Математика 211кб Панфилова 

И при помощи библиотеки можно было бы получить

21ис-3 1) 211кб Математика Панфилова 

Ну или по другому,как уже захочу я
Отслеживать
69.4k 5 5 золотых знаков 20 20 серебряных знаков 51 51 бронзовый знак
задан 30 мая 2022 в 16:41
54 6 6 бронзовых знаков
Для этого не надо никакой библиотеки.
30 мая 2022 в 16:55

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

txt = '21ис-3 1) Математика 211кб Панфилова И' tt = txt.split() print(tt) print(f'   ') ['21ис-3', '1)', 'Математика', '211кб', 'Панфилова', 'И'] 1) 211кб Математика Панфилова 

Отслеживать
ответ дан 30 мая 2022 в 16:51
4,530 4 4 золотых знака 8 8 серебряных знаков 22 22 бронзовых знака
Сплит по пробельным символам дефолтный, можно параметр не указывать
30 мая 2022 в 17:03

  • python
  • порядок
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как поменять местами символы в строке python

Проще всего будет привести строку к списку, поменять элементы списка местами и вновь собрать строку.

text = 'Foobar' l = list(text) l[2], l[4] = l[4], l[2] ''.join(l) # 'Foabor' 

Вывести строку в обратном порядке в Python

Решение простое с использованием расширенного оператора среза. «some string» [:: — 1] напечатает строку в обратном порядке, что приведет к такому результату: «gnirts emos». В этом руководстве объясняется, как это работает. Имейте в виду, что строки — это список символов, поэтому оператор расширенного среза работает и над списком.

Перевернуть строку, используя расширенный оператор среза

Предполагая, что у нас есть следующая строка:

x = "hello world"

мы можем изменить ee так:

в результате чего:

"dlrow olleh"

Объяснение оператор расширенного среза

Расширенный срез определяет начало, конец и шаг. Начало — это место, с которого начинается последовательность. Конец — это место для остановки в последовательности. Это позволяет вам отрезать часть последовательности.

x = "hello world"

Мы можем получить отрезок с 2 по 5 символ следующим образом:

Обратите внимание, что отрезок начинается после второго символа, так как индекс начинается с 0, и заканчивается после создания пятого символа:

Чтобы соответствовать нашему примеру, оставляя начальные и конечные значения пустыми, мы начинаем с начала последовательности и заканчиваем в конце. В основном это включает в себя всю последовательность.

"hello world"[::]
"hello world"

Шаг относится к тому, как мы будем проходить через последовательность. Если шаг равен -1, то мы шагаем по последовательности в обратном порядке. Если шаг равен 5, то мы перемещаемся по последовательности, попадающей в каждый пятый элемент.

Итак, используя это:

"hello world"[::-1]

означает, что мы включили всю строку и пошагово продвинулись назад, в конечном итоге, перевернув строку.

5 способов перевернуть строку в Python 3

Создадим функцию reversed1 с аргументом variable , где variable — переменная, хранящая строку, которую мы хотим перевернуть. Так как строка являются неизменяемым объектом, то создадим отдельную, пока что пустую переменную res , которая в будущем будет хранить результат.

def reversed1(variable): res=''

В функцию поместим цикл, который будет «прохаживаться» по каждому из элементов строки. Начнем мы с конца строки, используя положительные индексы, соответственно параметр start функции range — len(variable)-1 . -1 потому, что длина строки всегда на 1 больше, чем индекс последнего ее элемента. Закончить мы должны на первом символе строки, поэтому параметр stop функции range() — -1, поскольку перечисляются числа до значения этого параметра, не включительно. Параметр step — -1, потому что мы считаем в обратном порядке.

def reversed1(variable): res='' for i in range(len(variable)-1,-1,-1): pass

Теперь заполним тело цикла — проведем конкатенацию между старым значением res и элементом строки с индексом i . Таким образом, при каждой итерации цикла мы добавляем по одному символу к результату. После окончания цикла вернем результат.

def reversed1(variable): res='' for i in range(len(variable)-1,-1,-1): res+=variable[i] return res n = reversed1(input()) print(n)

2. Использование цикла со списком в результате

Этот способ аналогичен предыдущему, единственное его отличие заключается в типе данных переменной res — здесь она является списком.

Вместо конкатенации можно использовать метод append() , с помощью которого мы добавляем элемент, указанный в качестве аргумента к методу, в конец списка. Итак, мы получили:

def reversed2(variable): res=[] for i in range(len(variable)-1,-1,-1): res.append(variable[i]) return res

Функция пока что возвращает список, состоящий из односимвольных элементов. Если нас это не устраивает, то почему бы не преобразовать список в строку при помощи метода join() ? Сделаем это, добавив конструкцию res=».join(res) .

def reversed1(variable): res=[] for i in range(len(variable)-1,-1,-1): res.append(variable[i]) res=''.join(res) return res n = reversed1(input()) print(n)

3. Рекурсия

Третий в нашем обзоре способ — рекурсия, как всегда трудная для понимания. Как всегда создаем функцию, но не спешим помещать туда цикл.

Начну объяснение с конца. Если мы записали в результат все символы кроме первого, то длина оставшейся строки равна единице и, следовательно, ее нужно вернуть. Получаем:

def reversed3(variable): if len(variable) == 1: return variable

Но если длина строки больше одного, то нужно вернуть последний из ее элементов и вызвать эту же функцию, но уже отрезав последний символ. Сделать это мы можем с помощью среза variable[:-1] . Обновим картину:

def reversed3(variable): if len(variable) == 1: return variable else: return variable[-1] + reversed3(variable[:-1])

Использование else: здесь необязательно, так как после возвращения чего-либо этой функцией она завершится. Поэтому конструкцию return variable[-1] + reverse3(variable[:-1]) можно поместить напрямую в тело функции. Конечный вариант решения:

def reversed3(variable): if len(variable) == 1: return variable return variable[-1] + reversed3(variable[:-1]) n = reversed3(input()) print(n)

4. Использование встроенной функции

В Python 3 встроена специальная функция reversed() , в качестве аргумента она принимает список или строку, а возвращает итератор последовательности значений, состоящей из всех элементов аргумента в обратном порядке.

Простыми словами — недостаточно написать res = reversed(variable) , данные нужно преобразовать в нужный тип (в нашем случае — в строку). Сделать мы это можем при помощи метода join() , соединив последовательность через пустую строку. После выполненных действий возвращаем результат. Код:

def reversed4(variable): res=''.join(reversed(variable)) return res n = reversed4(input()) print(n)

5. Срез строки

Можете представить способ перевернуть строку, который был бы короче названия функции? А я могу!

Срез строки — вещь прекрасная, но порой пугающая новичков «уплотненным» синтаксисом. Срез содержит три параметра — [start:stop:step], аналогично функции range() . Подробнее о них вы можете прочитать в других статьях на Хабре.

Для способа с использованием срезов не нужно даже создавать функцию, только зря строки и время потратите. Все элементарно — присвоим параметру step значение -1 и пропустим два других параметра, происходит магия — строка переворачивается:

n = input()[::-1] print(n)

Конечно, никакой магии здесь нет, мы просто перебираем символы с шагом -1, то есть в обратном порядке.

Заключение

Первый и второй способы как нельзя лучше подходят, если во время переворота строки нужно ее изменять. При этом они значительно уступают 4 и 5 способам в скорости. Читаются умеренно хорошо, поэтому в некоторых случаях их уместно использовать.

Насчет третьего способа много сказать не могу, поскольку не могу придумать ему применение. Такой способ плохо читается и довольно медленный, поэтому я не рекомендую его использовать.

Четвертый способ довольно быстрый, отлично читается и подходит во многих случаях.

Пятый способ — самый быстрый, хорошо читается, очень краткий (6 символов), поэтому его я считаю наиболее предпочтительным.

Сравнительную таблицу скорости некоторых способов вы можете найти по ссылке — https://python-scripts.com/reversed

Если знаете что-либо еще по этой теме, хотите меня поправить или дать идею — пишите в комментариях, я все прочту и приму к сведению. Удачи!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *