Python 如何在列表中间插入整数的多个副本?

Python 如何在列表中间插入整数的多个副本?,python,list,Python,List,我的任务是: 设L为非负整数列表。编写一个表达式,将L的最中心元素替换为0的多个副本。请注意,这里的“最中心”是以奇数长度列表的通常方式定义的,但对于偶数长度列表来说可能有点不寻常。因此,例如,如果L=[1,2,3,4,5],则L的修改值将是[1,2,0,0,4,5],但如果L=[1,2,0,3],则修改后的值将是[1,2,3],因为0——此处是等长列表的最中心元素——将被0份0替换 我想出的表达方式是 L[len(L)/2] = [0] * L[(len(L)/2)] 而L=[1,2,3,4

我的任务是:

L
为非负整数列表。编写一个表达式,将
L
的最中心元素替换为
0
的多个副本。请注意,这里的“最中心”是以奇数长度列表的通常方式定义的,但对于偶数长度列表来说可能有点不寻常。因此,例如,如果
L=[1,2,3,4,5]
,则
L
的修改值将是
[1,2,0,0,4,5]
,但如果
L=[1,2,0,3]
,则修改后的值将是
[1,2,3]
,因为
0
——此处是等长列表的最中心元素——将被0份
0
替换

我想出的表达方式是

L[len(L)/2] = [0] * L[(len(L)/2)]
L=[1,2,3,4,5]
的输出是

[1, 2, [0, 0, 0], 4, 5]

我需要消除这个内部列表元素,这样零就是外部列表的一部分。我们仅限于一行,没有for/while循环。

正如@saulspatz建议的那样,使用切片:

middle = len(L) / 2
L = L[:middle] + ([0] * L[middle]) + L[middle + 1:]

自Python 2.3以来,可以:


尝一片。太短了,我再说一遍。尝试一个切片。显然,这可以根据您的需求在一行中完成,不使用变量middle,只在出现的地方使用len(L)/2。为了阅读更多关于切片的内容,我发现这个问题非常有用:事实上,我的意思是“分配给切片”,正如Ekhumaro在他的回答中所说的,但这当然也有效。我从来不知道这是可能的。谢谢:-)
>>> L = [1, 2, 3, 4, 5]
>>> L[len(L)//2:len(L)//2 + 1] = [0] * L[(len(L)//2)]
>>> L
[1, 2, 0, 0, 0, 4, 5]   
>>> L = [1, 2, 0, 3]
>>> L[len(L)//2:len(L)//2 + 1] = [0] * L[(len(L)//2)]
>>> L
[1, 2, 3]