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

时间:2015-09-12 22:12:13

标签: python list

我的任务是:

L成为非负整数的列表。编写一个表达式,用L的多个副本替换0的最中心元素。请注意,这里的“centermost”定义了奇数长度列表的常用方法,但对于偶数长度列表可能看起来有点不寻常。因此,例如,如果L = [1, 2, 3, 4, 5]L的修改后的值将为[1, 2, 0, 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]

我需要消除内部列表元素,使得零是外部列表的一部分。我们被限制在一行而不是/ while循环。

2 个答案:

答案 0 :(得分:1)

@saulspatz建议使用切片:

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

答案 1 :(得分:1)

从Python 2.3开始,可以assign to slices

>>> 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]