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

Why my reverse() method doesn't work in python 3?

我正在尝试做这个练习,你必须记下一个词并检查它是否是回文。我尝试通过将字符串放入列表然后将其反转并将其转回字符串来做到这一点,但是由于某种原因,反转方法对我不起作用,我检查了用法是正确的。

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: can only join an iterable

reverse() 列表的方法没有 return 任何东西,只是在 Python 中反转列表本身 3. 所以加入 wordLetters 而不是 b.Hope 这解决了问题。

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

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

输出:

[4, 3, 2, 1]

如果您尝试获取由 reverse 编辑的值 return,您将得到 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]

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

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

documentation 所述:

list.reverse()

Reverse the elements of the list in place.

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

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

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

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