Pythonのスライスノートについて

  

まず、インデックスは、オブジェクトのPythonをスライスすることができます

前記二つの部分の正および負のインデックスindex、示されるように= [0、1、2、3、4、5、6、7、8、9]例:

 
Pythonのインデックス.JPG

スライスのPythonの動作の第二に、一般的なモード

完全な発現は、2つのスライスを含む「:」、三つのパラメータ(START_INDEX、END_INDEX、ステップ)を分離する場合にのみ「:」第三のステップ= 1の、デフォルトパラメータ。

切片操作基本表达式:object[start_index:end_index:step] 

ステップ:正と負の数は、データ「ステップカットを決定するの絶対値が利用可能である 『との符号決定』方向をカット 『を、Nを示し、』左から右へ 『の値は、負を示します』右から左への「ステップが省略された値。デフォルトは1つの値の単位で左から右へ、すなわち、1です。」カットの向きが重要です!「」カット方向は非常に重要です!「」カット方向は非常に重要です!「三回言うべき重要なこと!

START_INDEX:(インデックス自体を含む)開始インデックスを示し、「出発点」または「宛先」が開始されると、オブジェクト「エンドポイント」開始値から、この引数を省略し、ステップによって決定正および負のパラメータ、負の「終わり」からスタート始まった「出発点」から前向きな一歩です。

END_INDEX:終了インデックス(インデックス自体は含まれていない)を示し、引数が省略された場合、「開始点」または「エンドポイント」、ステップによって決定同一の正および負のパラメータであるように、データアップを取って、「終了」を示し、進みます「終了」までのタイミングがするまで否定である「出発点。」

三、スライス作業のPythonの詳細な例

以下の実施例は、リストA = [0、1、2、3、4、5、6、7、8、9実施例です。

>>>a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
1.カット単一の値
>>>a[0] >>>0 >>>a[-4] >>>6 
2.完全なオブジェクトをカット
>>>a[:] #从左往右 >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>>a[::]#从左往右 >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>>a[::-1]#从右往左 >>> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 
3. START_INDEXとEND_INDEXは全て正(+)のインデックスケースであります
>>>a[1:6] >>> [1, 2, 3, 4, 5] step=1,从左往右取值,start_index=1到end_index=6同样表示从左往右取值。 
>>>a[1:6:-1] >>> [] 输出为空列表,说明没取到数据。 step=-1,决定了从右往左取值,而start_index=1到end_index=6决定了从左往右取值,两者矛盾,所以为空。 
>>>a[6:1] >>> [] 同样输出为空列表。 step=1,决定了从左往右取值,而start_index=6到end_index=1决定了从右往左取值,两者矛盾,所以为空。 
>>>a[:6] >>> [0, 1, 2, 3, 4, 5] step=1,从左往右取值,从“起点”开始一直取到end_index=6。 
>>>a[:6:-1] >>> [9, 8, 7] step=-1,从右往左取值,从“终点”开始一直取到end_index=6。 
>>>a[6:] >>> [6, 7, 8, 9] step=1,从左往右取值,从start_index=6开始,一直取到“终点”。 
>>>a[6::-1] >>> [6, 5, 4, 3, 2, 1, 0] step=-1,从右往左取值,从start_index=6开始,一直取到“起点”。 
4. START_INDEX END_INDEX満杯と負( - )のインデックス場合
>>>a[-1:-6] >>> [] step=1,从左往右取值,而start_index=-1到end_index=-6决定了从右往左取值,两者矛盾,所以为空。 索引-1在-6的右边(如上图) 
>>>a[-1:-6:-1] >>> [9, 8, 7, 6, 5] step=-1,从右往左取值,start_index=-1到end_index=-6同样是从右往左取值。 索引-1在6的右边(如上图) 
>>>a[-6:-1] >>> [4, 5, 6, 7, 8] step=1,从左往右取值,而start_index=-6到end_index=-1同样是从左往右取值。 索引-6在-1的左边(如上图) 
>>>a[:-6] >>> [0, 1, 2, 3] step=1,从左往右取值,从“起点”开始一直取到end_index=-6。 
>>>a[:-6:-1] >>> [9, 8, 7, 6, 5] step=-1,从右往左取值,从“终点”开始一直取到end_index=-6。 
>>>a[-6:] >>> [4, 5, 6, 7, 8, 9] step=1,从左往右取值,从start_index=-6开始,一直取到“终点”。 
>>>a[-6::-1] >>> [4, 3, 2, 1, 0] step=-1,从右往左取值,从start_index=-6开始,一直取到“起点”。 
ハイブリッドインデックスの場合 - 5 START_INDEXのEND_INDEX及び正(+)と負()
>>>a[1:-6] >>> [1, 2, 3] start_index=1在end_index=-6的左边,因此从左往右取值,而step=1同样决定了从左往右取值,因此结果正确 
>>>a[1:-6:-1] >>> [] start_index=1在end_index=-6的左边,因此从左往右取值,但step=-则决定了从右往左取值,两者矛盾,因此为空。 
>>>a[-1:6] >>> [] start_index=-1在end_index=6的右边,因此从右往左取值,但step=1则决定了从左往右取值,两者矛盾,因此为空。 
>>>a[-1:6:-1] >>> [9, 8, 7] start_index=-1在end_index=6的右边,因此从右往左取值,而step=-1同样决定了从右往左取值,因此结果正确。 
連続切片の前記動作
>>>a[:8][2:5][-1:] >>> [4] 相当于: a[:8]=[0, 1, 2, 3, 4, 5, 6, 7] a[:8][2:5]= [2, 3, 4] a[:8][2:5][-1:] = 4 理论上可无限次连续切片操作,只要上一次返回的依然是非空可切片对象。 
7. 3つのパラメータは演算式をスライスに使用することができます
>>>a[2+1:3*2:7%3] >>> [3, 4, 5] 即:a[2+1:3*2:7%3] = a[3:6:1] 
スライス8.その他の目的

以上の説明をスライスする例示的リストとして記述されるが、実際に実行される動作のデータスライスタイプはタプル、文字列などを含む、多く存在します。

>>> (0, 1, 2, 3, 4, 5)[:3] >>> (0, 1, 2) 元组的切片操作 
>>>'ABCDEFG'[::2] >>>'ACEG' 字符串的切片操作 
>>>for i in range(1,100)[2::3][-10:]: print(i) 就是利用range函数生成1-99的整数,然后取3的倍数,再取最后十个。 

第四に、共通のスライス作業

リスト:= [0、1、2、3、4、5、6、7、8、9]オブジェクトの説明のために

1.でもポジションを取ります
>>>b = a[::2] [0, 2, 4, 6, 8] 
2.奇妙なポジションを取ります
>>>b = a[1::2] [1, 3, 5, 7, 9] 
3.オブジェクト全体をコピーします
>>>b = a[:] #★★★★★ >>>print(b) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>>print(id(a)) #41946376 >>>print(id(b)) #41921864 或 >>>b = a.copy() >>>print(b) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>>print(id(a)) #39783752 >>>print(id(b)) #39759176 

なお:[:]と.copy()はコピーのみ最外要素、「浅いコピー」であり、内部要素はなく別個のメモリ割り当てよりも、参照することによってネストされています。

>>>a = [1,2,['A','B']] >>>print('a={}'.format(a)) >>>b = a[:] >>>b[0] = 9 #修改b的最外层元素,将1变成9 >>>b[2][0] = 'D' #修改b的内嵌层元素 >>>print('a={}'.format(a)) >>>print('b={}'.format(b)) >>>print('id(a)={}'.format(id(a))) >>>print('id(b)={}'.format(id(b))) a=[1, 2, ['A', 'B']] #原始a a=[1, 2, ['D', 'B']] #b修改内部元素A为D后,a中的A也变成了D,说明共享内部嵌套元素,但外部元素1没变。 b=[9, 2, ['D', 'B']] #修改后的b id(a)=38669128 id(b)=38669192 
4.個々の要素を変更します。
>>>a[3] = ['A','B'] [0, 1, 2, ['A', 'B'], 4, 5, 6, 7, 8, 9] 
5.特定の位置に要素を挿入
>>>a[3:3] = ['A','B','C'] [0, 1, 2, 'A', 'B', 'C', 3, 4, 5, 6, 7, 8, 9] >>>a[0:0] = ['A','B'] ['A', 'B', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
6要素の一部あるいは
>>>a[3:6] = ['A','B'] [0, 1, 2, 'A', 'B', 6, 7, 8, 9] 

V.の概要

(A)START_INDEX、END_INDEX、ステップは符号を併用してもよい、同じ負、正の両方であってもよいです。;場合START_INDEXの位置START_INDEX位置が左から右の値に示すEND_INDEXを去ったとき場合、ステップは、(左から右に同じ意味を表す)正でなければならない。しかし、それ以外の場合は、データを適切に切断することができず、原則に従わなければなりませんEND_INDEXは(同じ意味を表す右から左へ)右から左への値を示し、この時間ステップは負である必要があり、右側にある、すなわち、両方の値の順序が同じでなければなりません。特別な場合、START_INDEXのEND_INDEXまたは省略、開始インデックスと終了インデックスの正および負のステップにより決定され、競合がある存在していない場合の値の方向(すなわち、空のリスト[]を返さない)が、正と負を取ります右に左ため、結果は、全く異なっています。

スライスを使用した場合(B)、正および負のステップは、ステップが省略された場合は特に、考慮しなければなりません。[-1:]のような:= [0、1、2、3、4、5、6、7、 "目的地" のために容易に誤解は、 "開始点"、すなわちA [-1]を得るために開始します、8、9]、実際には[-1:値は、開始インデックスSTART_INDEXながら、左から右に表されるので]は= [-1] = 9、ステップ= 1 = -1オブジェクト自体が最もあります右の要素が、右にデータがない、唯一[-1]の要素となるよう。

おすすめ

転載: www.cnblogs.com/68xi/p/11621967.html