是否有更好的方法同时插入和扩展列表?这是我目前正在做的一个丑陋的例子。 (假设我想在'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']
答案 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。我认为它符合你的要求。