同时插入和扩展列表?

时间:2009-03-16 21:17:24

标签: python

是否有更好的方法同时插入和扩展列表?这是我目前正在做的一个丑陋的例子。 (假设我想在'2'元素之后插入'2.4'和'2.6':

>>> a = ['1', '2', '3', '4']
>>> b = a[:a.index('2')+1] + ['2.4', '2.6'] + a[a.index('2'):]
>>> b
<<< ['1', '2', '2.4', '2.6', '3', '4']

4 个答案:

答案 0 :(得分:15)

>>> a = ['1', '2', '3', '4']
>>> a
['1', '2', '3', '4']
>>> i = a.index('2') + 1  # after the item '2'
>>> a[i:i] = ['2.4', '2.6']
>>> a
['1', '2', '2.4', '2.6', '3', '4']
>>>

答案 1 :(得分:5)

您可以使用list.insert(i, x)轻松插入单个元素,Python将其定义为s[i:i] = [x]

a = ['1', '2', '3', '4']
for elem in reversed(['2.4', '2.6']):
    a.insert(a.index('2')+1, elem))

如果要插入列表,可以创建省略[]:

的功能
def iextend(lst, i, x):
    lst[i:i] = x

a = ['1', '2', '3', '4']
iextend(a, a.index('2')+1, ['2.4', '2.6']
# a  = ['1', '2', '2.4', '2.6', '3', '4']

答案 2 :(得分:2)

我不清楚你在做什么;如果你想要添加值,并且列表保持有序,那么整个事情的排序更清晰(可能更快):

a.extend(['2.4', '2.6'])
a.sort()

答案 3 :(得分:2)

查看bisect module。我认为它符合你的要求。