ホームページ  >  記事  >  バックエンド開発  >  添字問題とシーケンススライスの解決策について

添字問題とシーケンススライスの解決策について

零下一度
零下一度オリジナル
2017-06-17 11:00:021109ブラウズ

この記事では、主に Python のシーケンス スライスの添字付けに関する関連情報をサンプル コードを通じて詳しく紹介します。必要な方は以下を参照してください。バー。

はじめに

Python では、スライスは、タプル、リスト、文字列のいずれであっても、よく使用される構文です。一般的な構文は次のとおりです。

sequence[ilow: ihigh :step] # ihigh、step は空にすることができます。わかりやすくするために、step の使用法は一時的に除外されていますsequence[ilow:ihigh:step] # ihigh,step 可为空; 为了简短易懂, 暂时排除step的用法考虑

先来简单示范下用法


sequence = [1,2,3,4,5]
sequence [ilow:ihigh] # 从ilow开始到ihigh-1结束
sequence [ilow:]  # 从ilow开始直到末尾
sequence [:ihigh]  # 从头部开始直到ihigh结束
sequence [:]   # 复制整个列表

语法很简洁, 也很容易理解, 这种语法在我们日常使用中 是简单又好用, 但我相信在我们使用这种切片语法时, 都会习惯性谨遵一些规则:

  • ilow, ihigh均小于 sequece的长度

  • ilow 3afdfebecaa5e3de587ff801d76a6de0sq_slice(s, i1, i2)


    使用法を簡単に説明しましょう


    // 字符串对象
    StringObject.c: (ssizessizeargfunc)string_slice, /*sq_slice*/
    
    // 列表对象
    ListObject.c: (ssizessizeargfunc)list_slice,  /* sq_slice */
    
    // 元组
    TupleObject.c: (ssizessizeargfunc)tupleslice,  /* sq_slice */

    構文は非常に簡潔で簡単です。この構文はシンプルで日常的に使いやすいですが、このスライス構文を使用するときは、習慣的にいくつかのルールに従うことになると思います。

      ilow、ihigh は両方ともシーケンスの長さよりも小さいです
  • ilow c6713bcca99b6dfcf1d0560f54d16774sq_slice(s, i1, i2) ですが、オブジェクトごとに対応する関数が異なるため、この sq_slice は少し特殊です。対応する関数は次のとおりです。 🎜🎜🎜🎜rrreee🎜 これらは 3 つあるためです。関数の実装はほぼ同じなので、そのうちの 1 つを分析するだけで済みます。 以下は、リストのスライス関数の分析です。

    上記の sq_slice 関数に対応するスライス関数からわかるように、スライスを使用するときに左と右の添え字がシーケンスの長さよりも大きい場合、それらはシーケンスの長さに再割り当てされるため、最初のスライスは次のようになります。 print a[10:20] , 实际上运行的是: print a4:4 . この分析により、添え字がオブジェクトの長さよりも大きいスライスに遭遇しても混乱することはなくなります~

以上が添字問題とシーケンススライスの解決策についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。