Python反向列表

我想颠倒一个string,并使用下面的代码,但生成的反向列表值是None。

代码:

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

它返回TypeError 。 为什么?

.reverse()返回None 。 所以你不应该把它分配给一个variables。

用这个代替:

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

我已经在IDEOne上运行了代码,以便您可以看到输出。 (另外请注意,输出是stringaisThis ;您可能想使用' '.join(revword) ,而不是空格。

另外请注意,您提供的方法只能反转文字 ,而不是文字 。 @ ron.rothman提供了一个链接,详细说明如何完整地反转string。

这是我个人最喜欢翻转string的方式:

 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" 

🙂

string的各种反转:

 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 

为了将来的参考,当一个对象具有类似于[].reverse()它通常在该对象上执行该动作(即列表被sorting并且不返回任何内容),而不像内置函数那样执行一个动作一个对象并返回一个值(即sorting列表)

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

for循环迭代从结尾(最后一个字母)开始的string(第一个字母)

 >>> 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' 

根据评论和其他答案:

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

方法链接在Python中起作用毕竟…

列表反向可以使用多种方式完成。
正如在前面的答案中提到的,两个非常突出,一个带有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()函数执行得更好。