ホームページ > バックエンド開発 > Python チュートリアル > Python スライス インデックスの使用法

Python スライス インデックスの使用法

不言
リリース: 2018-06-04 18:00:02
オリジナル
2539 人が閲覧しました

この記事では、主に Python スライス インデックスの使用法を紹介し、Python スライス インデックスの一般的な使用方法と運用上の注意事項を例の形式で詳細に分析します。必要な友人は参考にしてください。 Python スライス インデックスの使用法。参考のために皆さんと共有してください。詳細は次のとおりです。

Python では、単純な角括弧と添字を使用してシーケンスの各要素にアクセスできます。この方法はスライス演算子と呼ばれます。スライスには 3 つのタイプがあります。演算子。形式:

[][:][::] 特定のデータ要素にアクセスするための構文は次のとおりです:

sequence[ Index]

sequence[index]

sequence是序列的名字,index是访问元素的对应的偏移量,为正数,0<=index<=len(sequence)-1;使用负索引的时候,其范围为-len(sequence) <=index <= -1

由于Python是面向对象的,所以也可以通过在序列后直接加上一个索引进行访问,如下所以

print (&#39;a&#39;,&#39;b&#39;,&#39;c&#39;,&#39;d&#39;)[2]
ログイン後にコピー

对于访问多个元素的情形

sequence[starting_index:ending_index]

下面就访问的几种方式进行举例说明:

sequence="abcdefgh"
print len(sequence)  #显示序列长度
print sequence    #打印完整序列
print sequence[:]
print sequence[2:3]  #切片显示,不指定步长默认为1,指定了步长(这里是setp为2)按照步长进行显示
print sequence[1:6:2]
print sequence[3]   #元素访问
print sequence[0:3]  #从首元素开始访问,访问区间为[0,3),左开you
print sequence[:3]
print sequence[2:8]  #从第二个元素一直访问到最后一个元素
print sequence[2:]
print sequence[::-1] #从最后一个元素开始访问,逆序访问,可以视为“翻转”操作
print max(sequence)
print min(sequence)
print sequence.index(&#39;c&#39;)
ログイン後にコピー

这里要注意的是重复操作符 *

sequence * copies_int

当需要一个序列的多个拷贝时,重复操作符就可以发挥作用了,copies_int 必须为整形

print sequence*3   #使用重复操作符
ログイン後にコピー

连接操作符 +

sequence1 + sequence2

允许使用 + 将两个相同类型的序列进行连接

print sequence + sequence
ログイン後にコピー

但注意看起来很方便,但是这种操作不是最快或者最有效地,对字符串来说,这个操作不如把所有子字符串放到一个列表中或者可迭代对象中,然后使用join()方法来把所有的内容连接在一起节约内存;而对于列表而言,推荐是哟个列表类型的extend()方法来把两个或者多个列表对象合并

str.join(sequence) #方法用于将序列中的元素以指定的字符连接生成一个新的字符串
ログイン後にコピー

str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );
ログイン後にコピー

输出为:

a-b-c
ログイン後にコピー

list.extend(seq)  #函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
ログイン後にコピー

aList = [123, &#39;xyz&#39;, &#39;zara&#39;, &#39;abc&#39;, 123];
bList = [2009, &#39;manni&#39;];
aList.extend(bList)
print "Extended List : ", aList ;
ログイン後にコピー

输出为:

Extended List :  [123, &#39;xyz&#39;, &#39;zara&#39;, &#39;abc&#39;, 123, 2009, &#39;manni&#39;]
ログイン後にコピー

切片索引的语法要比简单的单一元素索引方法灵活很多,开始和结束索引值可以超过字符串的长度。即起始索引值可以小于0,而结束索引值可以大于序列的长度,如:

print (&#39;Faye&#39;,&#39;Leanna&#39;,&#39;Daylen&#39;)[-100:100]
ログイン後にコピー

输出为:

(&#39;Faye&#39;, &#39;Leanna&#39;, &#39;Daylen&#39;)
ログイン後にコピー

如果有一个字符串,想通过循环按照这样的方式进行显示:每次都把位于最后的那一个字符砍掉,如何实现呢?

sequence = &#39;abcdef&#39;
i = -1
for i in range(-1,-len(sequence),-1):
  print sequence[:i]
ログイン後にコピー

输出为:

abcde
abcd
abc
ab
a
ログイン後にコピー

发现没有显示第一个,即是没有显示完整的字符串,除开另外单独定义一个sequence[:0]sequence

はシーケンスの名前、

index

はアクセスされた要素の対応するオフセット (正の数)、

0<=index<=len(sequence)-1

; 負のインデックスを使用する場合、その範囲は

-len(sequence) <=index <= -1 です

Python はオブジェクト指向であるため、シーケンスの直後にインデックスを追加することによってもアクセスできます。以下の通り

sequence = &#39;abcdef&#39;
for i in [None] + range(-1,-len(sequence),-1):
  print sequence[:i]
ログイン後にコピー

複数の要素にアクセスする場合🎜🎜sequence[starting_index:ending_index]🎜🎜 以下はいくつかのアクセス方法の例です:🎜🎜🎜
abcdef
abcde
abcd
abc
ab
a
ログイン後にコピー
🎜🎜🎜🎜ここで注意すべき点は、重複演算子 *🎜🎜🎜sequence *copies_int🎜🎜 シーケンスの複数のコピーが必要な場合、repeat 演算子が機能します。🎜copies_int🎜 は整数でなければなりません 🎜🎜🎜 rrreee🎜🎜🎜 🎜接続演算子 +🎜🎜🎜sequence1 + sequence2🎜🎜を使用すると、+ を使用して同じタイプの 2 つのシーケンスを接続できます🎜🎜🎜rrreee🎜🎜🎜しかし、これは非常に便利であることに注意してくださいただし、この操作は最速または最も効率的ではありません。文字列の場合、この操作はすべての部分文字列をリストまたは反復可能なオブジェクトに入れてから、join() メソッドを使用してすべてを結合するよりも劣ります。一緒にするとメモリが節約されます。リストの場合は、リスト タイプの extend() メソッドを使用して 2 つ以上のリスト オブジェクトをマージすることをお勧めします🎜🎜🎜rrreee🎜🎜🎜🎜rrreee🎜🎜🎜 : 🎜rrreee🎜🎜rrreee🎜🎜🎜🎜rrreee🎜🎜🎜 出力は次のとおりです: 🎜rrreee🎜 スライス インデックスの構文は、単純な単一要素のインデックス方法よりもはるかに柔軟であり、開始インデックス値と終了インデックス値は次のとおりです。文字列の長さを超えています。つまり、開始インデックス値は 0 未満にすることができ、終了インデックス値は次のようにシーケンスの長さより大きくすることができます。 🎜🎜🎜rrreee🎜🎜🎜 出力は次のようになります。 、ループを通じてこのように表示したい場合: 毎回最後の文字を切り取るにはどうすればよいですか? 🎜🎜🎜rrreee🎜🎜🎜 出力は次のとおりです: 🎜rrreee🎜 別の sequence[:0]、ここでは None を使用します。インデックス値 🎜🎜🎜rrreee🎜🎜🎜 として、出力は次のようになります: 🎜rrreee🎜🎜🎜🎜🎜🎜🎜🎜

以上がPython スライス インデックスの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート