3

私はPythonを初めて使用し、スライス表記について読んでいるときに、次のコードスニペットに出くわしました。非常に簡単な例では理解して使用することができましたが、次の例ではその使用法を理解できませんでした。どんな説明も本当に役に立ちます!

>>> a = [1,2]
>>> a[1:1] = [3,4,5]
>>> print a
[1, 3, 4, 5, 2]

>>> a = [1,2]
>>> a[0:1] = [3,4,5]
>>> print a
[3, 4, 5, 2]
4

2 に答える 2

6
a[n:m] = b
# is essentially* equivalent to
a = a[:n] + b + a[m:]

a[n:m]これを「replacewith」と読むことができますb(以降a = a[:n] + a[n:m] + a[m:])。

*実際にスライスすると、リストがインプレースで変更されます(つまり、id(a)変更されません)。これは通常は望ましいことです(設定a=によって新しいaメモリの場所が作成されます)。

だからあなたの例では:

a = [1,2]
#a[1:1] = [3,4,5]
a = a[:1] + [3,4,5] + a[1:]
#   [1]               [2]
[1, 3, 4, 5, 2]

a = [1,2]
#a[0:1] = [3,4,5]
a = a[:0] + [3,4,5] + a[1:]
#   []                [2]
[3, 4, 5, 2]
于 2012-09-24T11:16:04.517 に答える
0

a[1:1]リストの最初の要素と2番目の要素の間の位置にある空のスライスです。
つまり、「リストの最初の要素の後にa[1:1] = [3,4,5]要素を挿入する」という意味です。3,4,5

a[0:1]リストの最初の要素から2番目の要素までのスライスです(ただし、これは除外されます)。
つまりa[0:1] = [3,4,5]、「リストの最初の要素を要素に置き換える」という意味3,4,5です。

おそらく、この視覚化は次のことに役立ちます。

| h | e | l | l | o |    <-- string "hello"
0   1   2   3   4   5    <-- slice positions
^---^                    <-- slice [0:1]: "h"
    ^                    <-- slice [1:1]: ""
于 2012-09-24T11:16:37.590 に答える