Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python split()与rsplit()的性能?_Python_String_Split - Fatal编程技术网

python split()与rsplit()的性能?

python split()与rsplit()的性能?,python,string,split,Python,String,Split,我有一个python字符串。我想在非常接近字符串末尾的分隔符上使用maxslit=1拆分它 例如 a = "abcdefghijklmnopqrstuvwxyz,1". a.split(“,”,1)在性能方面是否比a.rsplit(“,”,1)更好?下面是一个时间测试,用于比较两种方法的速度: >>> from timeit import timeit >>> timeit('"abcdefghijklmnopqrstuvwxyz,1".split(",",

我有一个python字符串。我想在非常接近字符串末尾的分隔符上使用
maxslit=1
拆分它

例如

a = "abcdefghijklmnopqrstuvwxyz,1".

a.split(“,”,1)
在性能方面是否比
a.rsplit(“,”,1)
更好?

下面是一个时间测试,用于比较两种方法的速度:

>>> from timeit import timeit
>>> timeit('"abcdefghijklmnopqrstuvwxyz,1".split(",", 1)')
1.6438178595324267
>>> timeit('"abcdefghijklmnopqrstuvwxyz,1".rsplit(",", 1)')
1.6466740884665505
>>>
如你所见,它们大致相当
str.split
快了几分之一秒,但这并不重要。所以,你可以选择任何你想要的方法


尽管如此,
str.split
方法键入的字符少了一个。:)

为了补充@iCodez answer,您可以从命令行运行计时测试:

$ python -m timeit '"abcdefghijklmnopqrstuvwxyz,1".split(",", 1)'
1000000 loops, best of 3: 0.321 usec per loop
$ python -m timeit '"abcdefghijklmnopqrstuvwxyz,1".rsplit(",", 1)'
1000000 loops, best of 3: 0.327 usec per loop

因此,事实上,这是一个无关紧要的区别。

在前面的答案的基础上,使用split vs rsplit应该取决于您要搜索的位置。 例如:

$ python -m timeit '"abcdefghijklmnopqrstuvwxyz,sdfsgfkdjgherughieug,1".split(",")[2]'
1000000 loops, best of 3: 0.48 usec per loop
$ python -m timeit '"abcdefghijklmnopqrstuvwxyz,sdfsgfkdjgherughieug,1".rsplit(",",1)[1]'
1000000 loops, best of 3: 0.453 usec per loop

在这里,您正在搜索1,在这种情况下,使用rsplit比split更快,而对于前面答案中的示例,split更快。

我来参加这个聚会已经太晚了,但是对于任何其他遇到这个问题的人,
分区
split(x,1)
更快:


如果你愿意的话,你可以通过
h、u,t=s.rpartition(',')
或诸如此类的方法轻松地抛弃

我认为
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))

您可以看到,
split()
用于在第一次出现时分割字符串,而
rsplit()
用于在最后一次出现时分割字符串。

看起来像是过早优化。这不会影响你的表现。选择你的战斗。@rikAtee当所有答案都同样可读时,这不是过早的优化。这是学习类似方法的性能,这样如果您必须执行此类操作,您将知道许多类似选项中哪一个是最好的。虽然这是真的,但问题是关于
split
vs
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))