- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据我的理解(但实际上没有测试),使用 len() 函数计算字符串的 len (例如)比简单地计算同一字符串中的字符数花费的时间更少,因为 len() 以某种方式进行了优化。 是这样吗?用简单的话来说它是如何工作的?
后续的实际问题可能是:“如果可能的话,就 O(code) 复杂度而言,使用 len(string) 等代码进行早期错误检测通常是一个好的做法”
谢谢
已更新。最初我没有提供任何代码,所以现在只是添加它,并希望如果我没有对其进行太多修改的话,这将具有一定的代表性。
import timeit
def len_test(arr):
return len(arr)
def manual_count(num):
ln = 0
i = 0
while i < num:
ln += 1
i += 1
return ln
for i in range(1000, 10000, 1000):
count = i
array = [_ for _ in range(i)]
t1 = timeit.timeit(stmt='len_test(array)', setup='from __main__ import len_test, array', number=count)
t2 = timeit.timeit(stmt='manual_count(count)', setup='from __main__ import manual_count, count', number=count)
print('i: {}, len:{:.8}, count: {:.8}'.format(i, t1, t2))
i: 1000, len:0.0001499, count: 0.12168087
i: 2000, len:0.000327363, count: 0.53221788
i: 3000, len:0.000449699, count: 1.167412
i: 4000, len:0.000595823, count: 2.1061223
i: 5000, len:0.000762714, count: 3.2617024
i: 6000, len:0.000937534, count: 4.8079927
i: 7000, len:0.001076862, count: 6.5171025
i: 8000, len:0.001222231, count: 9.3587468
i: 9000, len:0.001398561, count: 11.686714
最佳答案
我在实际情况下检查过,计数速度比 len() 快 2 倍或更多。
我读取两个 CSV 格式文本然后计算行数的代码是这样的:
import time
import csv
start_time = time.time()
psr = open('e_psr.txt')
cpr = open('e_cp.txt')
csv_psr = csv.reader(psr, delimiter=',')
csv_cp = csv.reader(cpr, delimiter=',')
csv_cp_copy = []
csv_psr_copy = []
r=0
e=0
for row in csv_psr:
csv_psr_copy.append(row)
for row in csv_cp:
csv_cp_copy.append(row)
e = len(csv_cp_copy)
r = len(csv_psr_copy)
psr.close()
cpr.close()
print(e,r)
print("\n--- %s seconds ---" % (time.time() - start_time))
当我在 for 循环 (e += 1
) 中用一个简单的计数器替换 len()
时,结果发生了显着变化。
使用 len() 返回:
10000 10000
--- 0.13390278816223145 seconds ---
返回计数器:
10000 10000
--- 0.05642294883728027 seconds ---
关于python - python len() 比计数更快吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52327134/
给定 data Person = Person { _name :: String } makeClassy ''Person 它创建了一个 name :: Lens' Person String 我
Python内置的len()函数的成本是多少?(列表/元组/字符串/词典)
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: lenses, fclabels, data-accessor - which library for struct
Python 哪个性能更好: 1) for i in range(len(a[:-1])): foo() 或 2) for i in range(len(a)-1): foo() 更新
我正在学习 Python 并正在学习谷歌代码类(class)。在 list2.py 示例中,他们要求我们编写一个函数: Given two lists sorted in increasing ord
我最近开始使用 Python 进行数据分析,由于我不是从头开始学习 Python,所以我觉得我错过了一些细微差别。 我注意到的一件事是,在我的一份报告中,我从 CSV 文件中导入了一个数据集,将其作为
为什么a[len(a):] = [x]等同于a.append(x),但是a[len(a) ] = [x] 给出超出范围的错误? 最佳答案 根据 the documentation (强调我的): If
当我运行以下宏时: Sub try() Dim num As Integer num = 123 MsgBox Len(num) MsgBox VBA.Len(num)
我目前正在获取 Python 3.x 中以 0 的随机长度结尾的随机数列表。例如,我得到以下一组随机数字字符串: String 1 = 203502000000 String 2 = 30293300
我正在学习 numba 并遇到了这种我不理解的“奇怪”行为。我尝试使用以下代码(在 iPython 中,用于计时): import numpy as np import numba as nb @nb
在Go , 要检查字符串是否为空,可以使用: len(str) == 0 或 len(str) < 1 或 str == "" 基本上就是选择运营商的一米== , < , != ,但就性能而言希望选项
我正在尝试创建一个函数 hpure通过重复相同的元素直到达到所需的长度来生成 hvect。每个元素可能有不同的类型。例如:如果参数是 show 每个元素将是 show 函数的特化。 hpure sho
我正在实现一个图形操作脚本,但我对以下错误感到困惑: Traceback (most recent call last): File ".....py", line 12, in pri
通常为了节省一些时间,我希望我们在本地函数中使用 n = len(s)。我很好奇哪个调用更快或者它们相同? while i < len(s): # do something 对比 while i
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
大家好! 我从这个网站找到了这段很棒的代码: var points = [30,100]; document.getElementById("demo").innerHTML = myArrayMax
我有一个输出 17 个维度的解码器,其中不同部分是标签和数字。因此,对于标签,我使用了 one-hot 编码并使用“softmax”激活,对于数字,我使用了“sigmoid”激活函数。 这是解码器:
我在下面得到了这段代码,但即使调试它,我也不明白为什么给出 7 而不是 6。 更准确地说,当我调试每个返回时都会给我预期的结果: 第一个函数调用:ipdb> --Return-- ['a'] 第二个函
上述分配可能会出现什么样的问题?如果我们分配实际数据类型的大小而不是该类型指针的大小? 对于 sizeof (char*) > sizeof (char) 的字符来说,这会是一个问题吗?其他数据类型和
我知道 somelist[len(somelist)] 无法访问定义列表之外的索引 - 这是有道理的。 但是为什么 Python 允许你做 somelist[len(somelist):]? 我什至读
我是一名优秀的程序员,十分优秀!