gpt4 book ai didi

python - 在Python中,有什么理由比字符串切片更喜欢startswith吗?

转载 作者:行者123 更新时间:2023-12-02 19:07:38 26 4
gpt4 key购买 nike

如果 foo="apple",则以下语句等效:

foo.startswith("app")
foo[0:3] == "app"

从某种意义上说,两者都会返回“True”。

有什么理由比另一种方法更喜欢一种方法?我的意思是:

  1. 一种方法是否比另一种方法快得多?
  2. 一种方法是否比另一种方法更“Pythonic”?

最佳答案

切片是通用功能的特殊情况。如果您必须检查任何其他切片,除了从字符串的开头或末尾开始,那么切片就可以了。但对于这两种情况,startswithendswith 提供了更好的可读性。

正如 Zen Of Python 所说的“简单胜于复杂”和“可读性很重要”。因此,foo.startswith("app") 是一个更好的选择,除非效率确实很重要。

UPD:我进行了一项快速研究。看来,这两种方法之间几乎没有时间差异。计算时间相差5%左右,基本可以忽略不计。

这是研究本身:

import random
import string

def get_random_string(length):
letters = string.ascii_lowercase
result_str = ''.join(random.choice(letters) for i in range(length))
return result_str

txt = [get_random_string(random.randint(5, 20)) for i in range(1000)]

def time_slice():
s = datetime.now()
for i in txt:
check = i[0:5]
if i[0:5] == check:
pass
return (datetime.now() - s).microseconds

def time_func():
s = datetime.now()
for i in txt:
check = i[0:5]
if i.startswith(check):
pass
return (datetime.now() - s).microseconds

>>> sum(time_slice() for i in range(100)) / 100
... 316.15

>>> sum(time_func() for i in range(100)) / 100
... 303.08

关于python - 在Python中,有什么理由比字符串切片更喜欢startswith吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64802297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com