我有一个列表:[6,7,8,9,10]
,现在我想将它向右移动 2 次并将移动的位置替换为0
。输出将类似于:[0,0,6,7,8]
可能吗?
>>> s = [6,7,8,9,10]
>>> def lpadzero(s, n):
... return [0] * n + s[:-n]
>>> lpadzero(s, 2)
[0, 0, 6, 7, 8]
你可以直接这样做:
>>> 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 元素列表以获得意外结果)。
使用切片操作。
>>> 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)