为什么我的reverse()方法在python 3中不起作用?

时间:2018-01-13 15:23:14

标签: python string python-3.x list reverse

我试图做这个练习,你必须说一句,检查它是否是回文。我尝试将一个字符串放入列表然后将其反转并将其转回字符串,但反向方法因某些原因对我不起作用,我检查并且使用情况正确。

word = input('Give me a word:\n')
b = []
wordLetters = word.split()
b = wordLetters.reverse()
word2 = ''.join(b)

if word == word2:
    print('Yay')
else:
    print('heck')

它只是显示

  

TypeError:只能加入可迭代的

3 个答案:

答案 0 :(得分:0)

列表的

reverse()方法不会返回任何内容,只会在Python 3中反转列表本身。所以加入wordLetters而不是b。希望这可以解决问题。

答案 1 :(得分:0)

reverse的Python list方法中进行就地操作,例如它会修改您应用此操作的列表。此方法没有返回值。

l = [1, 2, 3, 4]
l.reverse()
print(l)

输出:

[4, 3, 2, 1]

如果您尝试获取reverse返回的值,您将获得None

print([1, 2, 3, 4].reverse())

输出:

None

如果您需要列表的反向副本,则应使用reversed功能:

l = [1, 2, 3, 4]
r = reversed(l)
print(r)
print(list(r))

输出:

<list_reverseiterator object at 0x7ff37e288ef0>
[4, 3, 2, 1]

请注意,它返回迭代器,而不是列表本身。您可以将该迭代器传递给join函数,也可以使用list构造函数从中构建一个列表。

方法sort和函数sorted也是如此。

答案 2 :(得分:0)

正如documentation所述:

  

list.reverse()

     

反转列表中的元素。

这意味着这种方法不会返回任何内容(否则会说明它返回的内容)并且它会就地反转列表。

同样str.split将(默认情况下)拆分为空格,这可能不是问题描述中的意图。

我的建议是简单地使用切片表示法来反转字符串:

word = input('Enter your word')
if word == word[::-1]:
    print('Yay')
else:
    print('heck')