Python - リストスライス

ListのアイテムにアクセスするときSlicingを利用する方法があります。

スライスからインポートリストの範囲を指定すると、該当するアイテムを新しいリストにして返すます。

たとえば、次のコードは、リストのindex 0からindex 2までのアイテムを持ってくるコードです。

cities = ['Seoul', 'Tokyo', 'Beijing', 'Washington', 'Paris']
x = cities[0:3]
print(x)

Output:

['Seoul', 'Tokyo', 'Beijing']

スライスはアイテムを持ってきて、新しいリストを作成するときにコピーするため、既存のリストが変更されません。

Syntax

Syntaxは次のとおりです。

Slicing[start:end:step]

それぞれの項目は、正または負の両方の設定が可能です。意味は次のとおりです。

  • start:スライスを開始Indexを意味します
  • end:スライスが終了するIndexを意味します。このIndexのアイテムは、スライスリストに含まれていません
  • step:indexの間隔を設定します。デフォルトは1です

特定の範囲のアイテムを取得する

[start:end]で、特定の範囲のアイテムを取得することができます。 startは含まれていますが、endは含まれていないリストを返してくれます。

numbers = ['0', '1', '2', '3', '4']
x = numbers[0:3]
print(x)

Output:

['0', '1', '2']

startを入力するだけリストの最後まで取得します。

numbers = ['0', '1', '2', '3', '4']
x = numbers[2:]
print(x)

Output:

['2', '3', '4']

endを入力するだけstartは、基本的に0に設定されます。

numbers = ['0', '1', '2', '3', '4']
x = numbers[:2]
print(x)

Output:

['0', '1']

負のIndexに表現することもできます。

numbers = ['0', '1', '2', '3', '4']
x = numbers[-3:-1]
print(x)

Output:

['2', '3']

Step

stepが正の場合、右方向にstepの間隔でアイテムを取得します。

たとえば、次はstepを2に設定した例です。 2つの間隔でアイテムを持ってきました。

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8']
x = numbers[0:8:2]
print(x)

Output:

['0', '2', '4', '6']

stepを指定しなければ、デフォルトで1に設定されます。

次の例では、start indexがend indexより大きいが、stepを-2に設定して反対方向にアイテムを取得します。

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8']
x = numbers[8:2:-2]
print(x)

Output:

['8', '6', '4']

シーケンス反転

次のようにstepだけ-1に設定すると、アイテムの順序を反転リストを作成することができます。

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8']
x = numbers[::-1]
print(x)

Output:

['8', '7', '6', '5', '4', '3', '2', '1', '0']

スライスでアイテムの値を変更

次のようにスライスに範囲を指定し、新しいリストを割り当てると、元のリストのデータが変更されます。

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8']
numbers[1:3] = ['a', 'b']
print(numbers)

Output:

['0', 'a', 'b', '3', '4', '5', '6', '7', '8']

Related Posts

codechachaCopyright ©2019 codechacha