python split()vs rsplit()性能?

use*_*351 13 python string split

我在python中有一个字符串.我想将它拆分maxsplit = 1为非常靠近字符串末尾的分隔符.

例如

a = "abcdefghijklmnopqrstuvwxyz,1".
Run Code Online (Sandbox Code Playgroud)

a.split(",", 1)在性能方面会更好a.rsplit(",",1)吗?

iCo*_*dez 19

以下是timeit.timeit用于比较两种方法的速度的时间测试:

>>> from timeit import timeit
>>> timeit('"abcdefghijklmnopqrstuvwxyz,1".split(",", 1)')
1.6438178595324267
>>> timeit('"abcdefghijklmnopqrstuvwxyz,1".rsplit(",", 1)')
1.6466740884665505
>>>
Run Code Online (Sandbox Code Playgroud)

如你所见,它们大致相当. str.split是几分之一秒快,但这真的不重要.所以,你可以选择你想要的任何方法.

PS尽管如此,该str.split方法需要输入一个字符.:)


mVC*_*Chr 6

我参加这个聚会迟到了,但是对于任何陷入困境的人来说,partition速度比split(x, 1)

>>> from timeit import timeit
>>> timeit('"abcdefghijklmnopqrstuvwxyz,1".split(",", 1)')
0.23717808723449707
>>> timeit('"abcdefghijklmnopqrstuvwxyz,1".rsplit(",", 1)')
0.20203804969787598
>>> timeit('"abcdefghijklmnopqrstuvwxyz,1".partition(",")')
0.11137795448303223
>>> timeit('"abcdefghijklmnopqrstuvwxyz,1".rpartition(",")')
0.10027790069580078
Run Code Online (Sandbox Code Playgroud)

,如果您愿意,您可以轻松地放弃h, _, t = s.rpartition(',')


小智 6

我认为split()和之间存在细微差别rsplit():例如:

str1 = "w,e,l,c,o,m,e"
print(str1.split(',',2))

str1 = "w,e,l,c,o,m,e"
print(str1.rsplit(',',2))
Run Code Online (Sandbox Code Playgroud)

你看,split()如果你想在第一次出现时拆分字符串,rsplit()则使用它,如果你想在最后一次出现时拆分字符串,则使用它。

  • 虽然这是事实 - 问题是关于 `split` 与 `rsplit` 的性能(可能特别是在只有一个出现的分隔符的字符串上) - 而不是它们在使用术语上的差异。 (2认同)