【发布时间】:2011-11-14 14:48:25
【问题描述】:
我正在寻找最 Pythonic 的方式来实现列表 extend 函数的一个版本,它延伸到给定索引而不是列表末尾。
a_list = [ "I", "rad", "list" ]
b_list = [ "am", "a" ]
a_list.my_extend( b_list, 1 ) # insert the items from b_list into a_list at index 1
print( a_list ) # would output: ['I', 'am', 'a', 'rad', 'list']
有没有办法在不建立新列表的情况下做到这一点,像这样?
a_list = [ "I", "rad", "list" ]
b_list = [ "am", "a" ]
c_list = []
c_list.extend( a_list[:1] )
c_list.extend( b_list )
c_list.extend( a_list[1:] )
print( c_list ) # outputs: ['I', 'am', 'a', 'rad', 'list']
这种方法实际上并没有那么糟糕,但我有一种预感,它可能会更容易。可以吗?
【问题讨论】:
-
建立一个新列表没有错,但你为什么要分步进行呢?比这简单得多:
c_list = a_list[:1] + b_list + a_list[1:]. -
我不知道 + 对于列表来说是超载的。
-
我需要同样的东西,但几乎要问,相反,要让
insert以类似extend的方式在索引处添加“解包”列表元素...答案是一样的:-D