1

我有一个列表:[6,7,8,9,10],现在我想将它向右移动 2 次并将移动的位置替换为0。输出将类似于:[0,0,6,7,8]

可能吗?

4

3 回答 3

3
>>> s = [6,7,8,9,10]
>>> def lpadzero(s, n):
...     return [0] * n + s[:-n]
>>> lpadzero(s, 2)
[0, 0, 6, 7, 8]
于 2013-08-03T07:00:58.520 回答
0

你可以直接这样做:

>>> a = [6, 7, 8, 9, 10]
>>> [0, 0] + a[:3]
[0, 0, 6, 7, 8]

将其移动可变数量的位置n

>>> [0]*n + a[:len(a)-n]

适当的边界检查取决于您(尝试n=6使用 5 元素列表以获得意外结果)。

于 2013-08-03T06:58:39.117 回答
0

使用切片操作。

>>> a = [6, 7, 8, 9, 10]
>>> del a[-2:]
>>> a[:0] = [0, 0]
>>> a
[0, 0, 6, 7, 8]

如果你想要固定大小的数组,你也可以使用collections.deque 。

>>> from collections import deque
>>> a = deque([6,7,8,9,10], maxlen=5)
>>> a
deque([6, 7, 8, 9, 10], maxlen=5)
>>> a.extendleft([0, 0])
>>> a
deque([0, 0, 6, 7, 8], maxlen=5)
于 2013-08-03T06:59:50.783 回答