sharkk
но временная сложность insert O(n). От него и стал уходить в сторону append O(1)
Во-первых, ты их ещё не написал, чтобы оптимизировать.
Во-вторых, по скорости они практически не отличаются.
Вот ошибки
Короткий вариант
[guest@localhost oneedit]$ python3 -m doctest oneedit1.doct
**********************************************************************
File "oneedit1.doct", line 27, in oneedit1.doct
Failed example:
f(-1, '', 'a')
Expected:
''
Got:
'a'
**********************************************************************
File "oneedit1.doct", line 29, in oneedit1.doct
Failed example:
f(1, '', 'a')
Expected:
''
Got:
'a'
**********************************************************************
File "oneedit1.doct", line 31, in oneedit1.doct
Failed example:
f(2, 'a', 'b')
Expected:
'a'
Got:
'ab'
**********************************************************************
File "oneedit1.doct", line 53, in oneedit1.doct
Failed example:
f(0, 'a', 'LRb')
Expected:
'ab'
Got:
'ba'
**********************************************************************
File "oneedit1.doct", line 55, in oneedit1.doct
Failed example:
f(0, 'a', 'LLRb')
Expected:
'ab'
Got:
'ba'
**********************************************************************
File "oneedit1.doct", line 57, in oneedit1.doct
Failed example:
f(0, 'a', 'LLLRb')
Expected:
'ab'
Got:
'ba'
**********************************************************************
File "oneedit1.doct", line 59, in oneedit1.doct
Failed example:
f(1, 'a', 'RLb')
Expected:
'ba'
Got:
'ab'
**********************************************************************
File "oneedit1.doct", line 61, in oneedit1.doct
Failed example:
f(1, 'a', 'RRLb')
Expected:
'ba'
Got:
'ab'
**********************************************************************
File "oneedit1.doct", line 63, in oneedit1.doct
Failed example:
f(1, 'a', 'RRRLb')
Expected:
'ba'
Got:
'ab'
**********************************************************************
File "oneedit1.doct", line 67, in oneedit1.doct
Failed example:
f(0, '', 'X')
Exception raised:
Traceback (most recent call last):
File "/usr/lib/python3.3/doctest.py", line 1287, in __run
compileflags, 1), test.globs)
File "<doctest oneedit1.doct[27]>", line 1, in <module>
f(0, '', 'X')
File "./oneedit1.py", line 14, in k
text.pop(p)
IndexError: pop from empty list
**********************************************************************
File "oneedit1.doct", line 73, in oneedit1.doct
Failed example:
f(1, 'a', 'X')
Exception raised:
Traceback (most recent call last):
File "/usr/lib/python3.3/doctest.py", line 1287, in __run
compileflags, 1), test.globs)
File "<doctest oneedit1.doct[30]>", line 1, in <module>
f(1, 'a', 'X')
File "./oneedit1.py", line 14, in k
text.pop(p)
IndexError: pop index out of range
**********************************************************************
File "oneedit1.doct", line 78, in oneedit1.doct
Failed example:
f(0, '', 'XX')
Exception raised:
Traceback (most recent call last):
File "/usr/lib/python3.3/doctest.py", line 1287, in __run
compileflags, 1), test.globs)
File "<doctest oneedit1.doct[32]>", line 1, in <module>
f(0, '', 'XX')
File "./oneedit1.py", line 14, in k
text.pop(p)
IndexError: pop from empty list
**********************************************************************
File "oneedit1.doct", line 80, in oneedit1.doct
Failed example:
f(0, 'a', 'XX')
Exception raised:
Traceback (most recent call last):
File "/usr/lib/python3.3/doctest.py", line 1287, in __run
compileflags, 1), test.globs)
File "<doctest oneedit1.doct[33]>", line 1, in <module>
f(0, 'a', 'XX')
File "./oneedit1.py", line 14, in k
text.pop(p)
IndexError: pop from empty list
**********************************************************************
File "oneedit1.doct", line 82, in oneedit1.doct
Failed example:
f(1, 'ab', 'XX')
Exception raised:
Traceback (most recent call last):
File "/usr/lib/python3.3/doctest.py", line 1287, in __run
compileflags, 1), test.globs)
File "<doctest oneedit1.doct[34]>", line 1, in <module>
f(1, 'ab', 'XX')
File "./oneedit1.py", line 14, in k
text.pop(p)
IndexError: pop index out of range
**********************************************************************
File "oneedit1.doct", line 85, in oneedit1.doct
Failed example:
f(1, '', 'X')
Exception raised:
Traceback (most recent call last):
File "/usr/lib/python3.3/doctest.py", line 1287, in __run
compileflags, 1), test.globs)
File "<doctest oneedit1.doct[35]>", line 1, in <module>
f(1, '', 'X')
File "./oneedit1.py", line 14, in k
text.pop(p)
IndexError: pop from empty list
**********************************************************************
File "oneedit1.doct", line 87, in oneedit1.doct
Failed example:
f(2, 'a', 'X')
Exception raised:
Traceback (most recent call last):
File "/usr/lib/python3.3/doctest.py", line 1287, in __run
compileflags, 1), test.globs)
File "<doctest oneedit1.doct[36]>", line 1, in <module>
f(2, 'a', 'X')
File "./oneedit1.py", line 14, in k
text.pop(p)
IndexError: pop index out of range
**********************************************************************
1 items had failures:
16 of 37 in oneedit1.doct
***Test Failed*** 16 failures.
[guest@localhost oneedit]$
Длинный вариант
[guest@localhost oneedit]$ python3 -m doctest oneedit2.doct
**********************************************************************
File "oneedit2.doct", line 27, in oneedit2.doct
Failed example:
f(-1, '', 'a')
Expected:
''
Got:
'a'
**********************************************************************
File "oneedit2.doct", line 39, in oneedit2.doct
Failed example:
f(0, 'a', 'Rb')
Expected:
'ab'
Got:
'ba'
**********************************************************************
File "oneedit2.doct", line 41, in oneedit2.doct
Failed example:
f(0, 'a', 'RRb')
Expected:
'ab'
Got:
'ba'
**********************************************************************
File "oneedit2.doct", line 48, in oneedit2.doct
Failed example:
f(0, 'a', 'RbLLc')
Exception raised:
Traceback (most recent call last):
File "/usr/lib/python3.3/doctest.py", line 1287, in __run
compileflags, 1), test.globs)
File "<doctest oneedit2.doct[19]>", line 1, in <module>
f(0, 'a', 'RbLLc')
File "./oneedit2.py", line 20, in k
text_after.insert(0, text_before.pop())
IndexError: pop from empty list
**********************************************************************
File "oneedit2.doct", line 50, in oneedit2.doct
Failed example:
f(1, 'a', 'LbRRc')
Expected:
'bac'
Got:
'bca'
**********************************************************************
File "oneedit2.doct", line 53, in oneedit2.doct
Failed example:
f(0, 'a', 'LRb')
Expected:
'ab'
Got:
'ba'
**********************************************************************
File "oneedit2.doct", line 55, in oneedit2.doct
Failed example:
f(0, 'a', 'LLRb')
Expected:
'ab'
Got:
'ba'
**********************************************************************
File "oneedit2.doct", line 57, in oneedit2.doct
Failed example:
f(0, 'a', 'LLLRb')
Expected:
'ab'
Got:
'ba'
**********************************************************************
1 items had failures:
8 of 37 in oneedit2.doct
***Test Failed*** 8 failures.
[guest@localhost oneedit]$
Сравнение по времени: первые результаты - для короткого; вторые результаты - для длинного.
[guest@localhost oneedit]$ ./oneeditcmp.py
[2.9612534179996146, 2.9638922090007327, 2.9655386000004]
[2.245790377999583, 2.2452530009995826, 2.2453736839997873]
[guest@localhost oneedit]$
То есть длинный даже в два раза не быстрее короткого.
sharkk
сохратил время прилично
Приличное сокращение - это от пяти раз. Если бы оно было быстрее в пять раз или хотя бы в три раза, то можно было бы говорить о приличном сокращении времени. А так ты просто усложнил код.
А чем это чревато, ну, вот давай теперь исправь эти ошибки в длинном коде - сразу поймёшь.