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

Use slice operation.

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

You can also use collections.deque if you want fixed size array.

>>> 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 に答える