你能改进Python的功能吗?

2024-03-29 05:46:13 发布

您现在位置:Python中文网/ 问答频道 /正文

一段时间以来,我一直在考虑Python中的一些函数,并且能够定义替代它们的职责的函数。我的问题是,默认函数是最有效的,还是我应该尝试构建更有效的函数。你知道吗

我已经做了list.reverse()例如

def reverse(lst):
    for i in range(len(lst) - 1, -1, -1):
        lst.append(lst.pop(i))

这种方法很有效。列表已排序。但在效率或内存使用方面,它比list.reverse()好吗?你知道吗


Tags: 方法函数in列表forlen定义def
2条回答

reverse()是用C实现的,这比您的实现要快得多。大多数python函数的设计都非常智能,并且是最有效的,以维护它们所需的功能。如果您愿意贡献,可以转到CPythongithub page并尝试改进一些代码。你知道吗

PyList_Reverse(PyObject *v)
{
    PyListObject *self = (PyListObject *)v;

    if (v == NULL || !PyList_Check(v)) {
        PyErr_BadInternalCall();
        return -1;
    }
    if (Py_SIZE(self) > 1)
        reverse_slice(self->ob_item, self->ob_item + Py_SIZE(self));
    return 0;

仅供参考:reverse()的一个更简单的python实现是简单的切片

def reverse(x):
    return x[::-1]

你的时间会慢一个数量级:

import time

def reverse(lst):
    for i in range(len(lst) - 1, -1, -1):
        lst.append(lst.pop(i))

thelist = ["Hello World","Something","Element"]

start = time.time()
for x in range(0,1000000):
    reverse(thelist)
print(time.time()-start)

start = time.time()
for x in range(0,1000000):
    thelist.reverse()
print(time.time()-start)

输出:

1.0335352420806885
0.11595964431762695

相关问题 更多 >