Подтвердить что ты не робот

Могу ли я расширить список в Python с помощью дополнительных элементов вместо добавления?

Я могу выполнить

a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]

Есть ли способ выполнить действие для расширения списка и добавления новых элементов в начало списка?

Подобно этому

a = [1,2,3]
b = [4,5,6]
a.someaction(b)
# a is now [4,5,6,1,2,3]

Я использую версию 2.7.5, если это важно.

4b9b3361

Ответ 1

Вы можете назначить срез:

a[:0] = b

Демо:

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a[:0] = b
>>> a
[4, 5, 6, 1, 2, 3]

По существу, list.extend() является назначением среза list[len(list):].

Вы можете "вставить" другой список в любую позицию, просто введите пустой кусок в этом месте:

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a[1:1] = b
>>> a
[1, 4, 5, 6, 2, 3]

Ответ 2

Это то, что вам нужно; -)

a = b + a

Ответ 3

Вы можете использовать collections.deque:

import collections
a = collections.deque([1, 2, 3])
b = [4, 5, 6]
a.extendleft(b[::-1])

Ответ 4

Если вам нужны быстрые операции, и вам нужно иметь доступ к произвольным элементам, попробуйте treap или red-black tree.

>>> import treap as treap_mod
>>> treap = treap_mod.treap()
>>> for i in range(100000):
...    treap[i] = i
...
>>> treap[treap.find_min() - 1] = -1
>>> treap[100]
100

Большинство операций с treaps и красно-черными деревьями можно сделать в O (log (n)). В среднем, скипы в среднем быстрее, но красно-черные деревья дают меньшую дисперсию во время работы.