データコンテナのスライス(シーケンス)
シーケンス:コンテンツが連続的で順序付けされており、添字を使用してインデックスを付けることができるデータ コンテナーのタイプ。
リスト、タプル、文字列はすべてシーケンスとみなすことができます。
要素 1、要素 2、要素 n
0、1、n - 順添字
-n、-2、-1 - 逆添字
シーケンスの一般的な特性は次のとおりです。順序付けされ、添字付きでインデックス付け可能、文字列、タプル、リストはすべてこの要件を満たしています。
シーケンスに対する一般的な操作 - スライス
シーケンスはスライスをサポートします。つまり、リスト、タプル、文字列はすべてスライス操作をサポートします。
スライス: シーケンスからサブシーケンスを削除します。
構文: シーケンス [開始インデックス:終了インデックス:ステップ]
指定された位置から開始し、指定された位置で終了するシーケンスから要素を取り出して、新しいシーケンスを取得することを示します:
1. 開始添字は開始位置を示します。空白のままにすることができます。空白のままにした場合は、それと見なされます。 2.終了
添字 マーク(含まれていません)は終了位置を示します。空白のままでも大丈夫です。空白にした場合は最後までインターセプトとみなされます。
3. ステップ長は、要素間の間隔を順番に取得します
① ステップ長 1 は要素を 1 つずつ取得することを示します
② ステップ長 2 は各要素を取得することを示します 一度に 1 要素をスキップすることを
③ ステップ サイズ N、スキップ N-1 で表します毎回の要素は、
④ ステップ サイズで表され、負の数であり、それを逆方向にとります (開始添え字と終了添え字も逆にマークする必要があることに注意してください)。
この操作はシーケンス自体には影響しませんが、新しいシーケンス (リスト、タプル、文字列) が生成されることに注意してください。
例:
# 对list进行切片,从1开始,4结束,步长1
my_list = [0, 1, 2, 3, 4, 5, 6]
result1 = my_list[1:4] # 默认步长是1,所以可以省略不写
print(f"结果1:{
result1}")
# 对tuple进行切片,从头开始,到最后结束,步长1
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result2 = my_tuple[:] # 起始和结束不写表示从头到尾,步长为1可以省略
print(f"结果1:{
result2}")
# 对str进行切片,从头开始,到最后结束,步长2
my_str = "0,1,2,3,4,5,6,7"
result3 = my_str[::2]
print(f"结果1:{
result3}")
# 对str进行切片,从头开始,到最后结束,步长-1
my_str = "0,1,2,3,4,5,6,7"
result4 = my_str[::-1] # 等同于序列反转了
print(f"结果1:{
result4}")
# 对列表进行切片,从3开始,1结束,步长-1
my_list = [0, 1, 2, 3, 4, 5, 6]
result5 = my_str[3:1:-1]
print(f"结果1:{
result5}")
# 对元组进行切片,从头开始,到最后结束,步长-2
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result6 = my_tuple[::2]
print(f"结果1:{
result6}")
操作結果:
結果 1: [1, 2, 3]
結果 1: (0, 1, 2, 3, 4, 5, 6)
結果 1: 01234567
結果 1: 7,6,5,4,3,2,1,0
結果 1:,1
結果 1: (0, 2, 4, 6)
シーケンスのスライスの概要
1. シーケンス: 添字インデックス付けをサポートする、連続的で順序付けられたコンテンツを含むデータ コンテナーの一種。
2. シーケンス、リスト、タプル、文字列とみなすことができます。
3. シーケンスをスライスする方法:シーケンス[開始:終了:ステップ]。
4. 先頭は省略可能、先頭からの開始も省略できます。
5. 末尾は省略可能で、末尾で終了します。
6. ステップ サイズは省略できます。省略されたステップ サイズは 1 です (負の数にすることもでき、逆の順序で実行することを示します)。
シーケンススライスの練習
# 三种方式取出我是二狗
my_str = "狗二是我1,nohtyp学"
# 倒序字符串,切片取出
result1 = my_str[::-1][9:13]
print(f"1的结果:{
result1}")
# 切片取出,然后倒序
result2 = my_str[0:4][::-1]
print(f"2的结果:{
result2}")
# split分隔“,” replace替换“来”为空,倒序字符串
result3 = my_str.split(",")[0].replace("1", "")[::-1]
print(f"3的结果:{
result3}")
操作結果:
1 の結果: 私は 2 番目の犬です
2 の結果: 私は 2 番目の犬です
3 の結果: 私は 2 番目の犬です