在python中替换列表元素的成本

时间:2015-06-21 12:27:05

标签: python list

给出python中的字符串列表,例如:

public void setBroadcastText(final String pstrText ,final TextView  tvView){

    handler.post(new Runnable() 
    {
        public void run() 
        {
            ptvView.setText(pstrText);
        }
    });

替换列表元素的成本/复杂性如下:

list_str = ['aa', 'bb', 'abc'].

(假设列表的长度为 n ,字符串的长度最多为 m

5 个答案:

答案 0 :(得分:1)

使用简单的测试,它似乎是恒定的时间 -

In [1]: list_str = ['aaa' for _ in range(100000)]

In [2]: %timeit list_str[0] = 'aab'
10000000 loops, best of 3: 77.7 ns per loop

In [3]: %timeit list_str[9999] = 'aab'
10000000 loops, best of 3: 77.2 ns per loop

In [4]: %timeit list_str[99999] = 'aab'
10000000 loops, best of 3: 78.7 ns per loop

In [5]: %timeit list_str[9] = 'aab'
10000000 loops, best of 3: 77.7 ns per loop

答案 1 :(得分:0)

替换元素的成本与列表的长度无关,与字符串的长度无关。在Python列表中只包含对象的引用。所以基本上,替换元素会覆盖大小指针的内存部分。

答案 2 :(得分:0)

由于CPython将列表实现为数组,因此l[i] = x之类的操作需要不变(O(1))时间。

请参阅此处的操作表:https://wiki.python.org/moin/TimeComplexity

答案 3 :(得分:0)

O(1)按列表中的索引替换元素的时间复杂度

答案 4 :(得分:0)

Python中的列表实现为动态分配的指向所包含值的指针数组。

用另一个元素替换元素只是指针调整和引用计数调整,需要一个恒定的时间(与列表的大小无关)。