1
#!/usr/bin/python


list2 = ['Bangalore','Cochin','Trivandrum','Auckland','Seoul','Los Angeles']

list2[5] = 'Hamilton'

list2.append('Sydney')
list2.append('San Jose')
list2.append('Amsterdam')

print "Cities = ",list2[0:(len(list2) - 1)]

print "Cities = ",list2[0:(len(list2))]

最初の print ステートメントはリストの最後の要素を出力しません. .次に、最後のインデックスが len(list) ではない理由 - 1

4

2 に答える 2

7

リストのスライスは範囲外エラーをスローしません:

list2[0:1234567890]

そのまま合法です

list2[-1:-1]

スライスするとき、上限はスライスに含まれないことに注意してください。

>>> list2[0:1]
['Bangalore']
>>> list2[0:0]
[]

したがって、スライスにはスライスなしとまったく同じ要素list2[0:len(list2)]が含まれますが、新しいリストが返されます。list2

その他の注意事項:

  • 開始値を省略すると、デフォルトで0になり、終了値を省略すると、リストの長さがデフォルトになります。したがって、 のlist2[0:len(list2)]ように記述できますlist2[:]

  • の値は最後から数えます。list2[:len(list2)-1]のように書くことができますlist2[:-1]

于 2013-05-22T22:18:09.597 に答える
3

上限が含まれていないためです。つまり、リストに要素が 1 つある場合、それをスライスに含めるには、0 ではなく 1 を入力する必要があります。list[0:0]は事実上空のスライスであり、上限が包括的である場合、空のスライスを取得する方法はありません。list[0:1]最初の要素のみを含むスライスを取得するには、代わりに必要になります。

(非常に理解しやすいので、要素が 1 つだけのリストを使用しています。より多くのアイテムを含むリストにも当てはまります。)

于 2013-05-22T22:18:17.870 に答える