为什么 .reverse() 不起作用?

Why isn't .reverse() working?

我正在尝试对一个句子进行拆分、反转并打印到屏幕上。

我无法理解 .reverse() 的工作原理? 当我做类似的事情时:

test = ['This','is','a','test']
new_test = test.reverse()
print(new_test)

当我 运行 我得到 None 时,这是为什么?我怎样才能让 .reverse() 工作?

这是我的最终代码:

sentence = input("What is your sentence? ")
split_sentence = sentence.split().reverse()
for word in sentence:
    print(word,end='')

您可以使用slicing

test = ['This','is','a','test']
>>> print(test[::-1])
['test', 'a', 'is', 'This']

reverse() 就地反转列表,returns None。只需打印您的原始列表:

test = ['This','is','a','test']
test.reverse() # In-place!
print(test)

reverse() 就地操作,而不是 return 一个新数组。如果您想使用副本,您需要执行以下操作:

arr = [1, 2, 3, 4, 5]
copy = arr.copy() # omit this if you don't want a new list
copy.reverse()
# copy now contains [5, 4, 3, 2, 1]
# arr still contains [1, 2, 3, 4, 5]

reverse() 函数执行列表的原位反转,这就是您在 new_test 列表中获得 None 的原因。您可以使用以下代码段来获得反向列表。

from copy import deepcopy

test = ['This','is','a','test']
new_test = deepcopy(test)
print(new_test)
new_test.reverse()
print(new_test)

输出:

['This', 'is', 'a', 'test']
['test', 'a', 'is', 'This']
list1 = [1,2,3,4,5,6]
print([ele for ele in reversed(list1)])

输出:

[6,5,4,3,2,1]