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]