python反向列表

Python reverse list

本问题已经有最佳答案,请猛点这里访问。

我试图反转一个字符串并使用下面的代码,但结果反转列表值为"无"。

代码:

1
2
3
4
str_a = 'This is stirng'
rev_word = str_a.split()
rev_word = rev_word.reverse()
rev_word = ''.join(rev_word)

返回TypeError。为什么?


这是我个人最喜欢的反转字符串的方法:

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

print(revword) #"gnirts a si sihT

或者,如果要颠倒单词顺序:

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

print(revword) #"string a is This"

:)


.reverse()返回None。因此,不应该将它赋给变量。

改为使用:

1
2
3
4
stra = 'This is a string'
revword = stra.split()
revword.reverse()
revword=''.join(revword)

我已经在IDeone上为您运行了代码,这样您就可以看到输出了。(还请注意,输出是stringaisThis;您可能希望使用' '.join(revword)替换为空格。)

还要注意,您提供的方法只会反转单词,而不是文本。@Ron.Rothman提供了一个链接,详细说明了如何反转整个字符串。


字符串上的各种反转:

1
2
3
4
5
6
7
8
9
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()这样的方法时,它通常在该对象上执行该操作(即列表被排序,不返回任何内容,不返回任何内容),而不像sorted这样的内置函数,它对一个对象执行一个操作并返回一个值(即排序列表)。


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

列表反转可以使用多种方法完成。
如前所述,两个非常突出,一个具有reverse()功能,另两个具有切片功能。我想谈谈我们更喜欢哪一种。我们应该始终使用reverse()函数来反转python列表。有两个原因,一个是原地逆转,另一个比另一个快。我有一些数字来支持我的答案,

1
2
3
4
5
6
7
8
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()函数的性能优于切片。


根据评论和其他答案:

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

方法链接毕竟在Python中有效…


for循环将字符串从结束(最后一个字母)迭代到开始(第一个字母)

1
2
3
4
5
6
>>> 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'