Подтвердить что ты не робот

Обратный список Python

Я пытаюсь изменить строку и использовать приведенный ниже код, но результирующее значение обратного списка - None.

Код:

str_a = 'This is stirng'
rev_word = str_a.split()
rev_word = rev_word.reverse()
rev_word = ''.join(rev_word)

Он возвращает TypeError. Почему?

4b9b3361

Ответ 1

.reverse() возвращает None. Поэтому вам не следует присваивать его переменной.

Используйте это вместо:

stra = 'This is a string'
revword = stra.split()
revword.reverse()
revword=''.join(revword)

Я запустил код в IDEOne для вас, чтобы вы могли видеть результат. (Также обратите внимание, что вывод stringaisThis, вы можете использовать ' '.join(revword) вместо пробела.)

Также обратите внимание, что метод, который вы предоставили, отменяет слова, а не текст. @ron.rothman предоставил ссылку, которая подробно описывает, как полностью изменить строку.

Ответ 2

Это мой личный любимый способ изменить строку:

stra="This is a string"
revword = stra[::-1]

print(revword) #"gnirts a si sihT

или, если вы хотите отменить порядок слов:

revword = " ".join(stra.split()[::-1])

print(revword) #"string a is This"

:)

Ответ 3

Различные развороты строки:

instring = 'This is a string'
reversedstring = instring[::-1]
print reversedstring        # gnirts a si sihT
wordsreversed = ' '.join(word[::-1] for word in instring.split())
print wordsreversed         # sihT si a gnirts
revwordorder = ' '.join(word for word in instring.split()[::-1])
print revwordorder          # string a is This
revwordandorder = ' '.join(word[::-1] for word in instring.split()[::-1])
print revwordandorder       # gnirts a si sihT

Ответ 4

В будущем, когда объект имеет такой метод, как [].reverse(), он обычно выполняет это действие над объектом (т.е. список сортируется и ничего не возвращает, None) в отличие от встроенных функций, таких как sorted, которые выполняют действие над объектом и возвращают значение (т.е. отсортированный список)

Ответ 5

>>> s = 'this is a string'
>>> s[::-1]
'gnirts a si siht'
>>> ''.join(reversed(s))
'gnirts a si siht'

Ответ 6

Цикл for выполняет итерацию строки с конца (последняя буква) для начала (первая буква)

>>> s = 'You can try this too :]'
>>> rev = ''
>>> for i in range(len(s) - 1, -1, -1):
...     rev += s[i]
>>> rev
']: oot siht yrt nac uoY'

Ответ 7

Основываясь на комментариях и других ответах:

str_a = 'this is a string'
rev_word = ' '.join(reversed(str_a.split()))

Цепочка методов действительно работает в Python в конце концов...

Ответ 8

Реверс списка можно сделать несколькими способами.
Как упоминалось в предыдущих ответах, два очень выдающихся, один с функцией reverse() и два с функцией среза. Я рассказываю о том, какой из них мы предпочли бы. Мы всегда должны использовать функцию reverse() для обращения к списку Python. Две причины: один разворот на месте и два быстрее, чем другие. У меня есть цифры, чтобы поддержать мой ответ,

In [15]: len(l)
Out[15]: 1000

In [16]: %timeit -n1 l.reverse()
1 loops, best of 3: 7.87 µs per loop

In [17]: %timeit -n1 l[::-1]
1 loops, best of 3: 10 µs per loop

Для 1000 целых списков функция reverse() выполняется лучше по сравнению с нарезкой.