>  기사  >  백엔드 개발  >  Python의 시퀀스 슬라이싱 첨자 문제에 대한 자세한 예

Python의 시퀀스 슬라이싱 첨자 문제에 대한 자세한 예

黄舟
黄舟원래의
2017-06-18 11:29:321075검색

이 글에서는 Python의 시퀀스 슬라이스 첨자 관련 정보를 주로 소개합니다. 이 글에서는 누구나 참고할 수 있고 학습할 가치가 있는 예제 코드를 통해 자세히 소개합니다. .

머리말

파이썬에서 슬라이싱은 튜플, 리스트 또는 string 등 자주 사용되는 구문입니다. 일반적인 구문은 다음과 같습니다.

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 68b3efc6018b9a19d827caf6084d035dsq_slice(s, i1, i2), 하지만 이 sq_slice는 약간 특별합니다. 왜냐하면 서로 다른 객체가 서로 다른 해당 기능을 갖기 때문입니다. 다음은 해당 기능입니다: 🎜🎜🎜🎜rrreee🎜 왜냐하면 3개이기 때문입니다. 함수 구현은 거의 동일하므로 그 중 하나만 분석하면 됩니다. 다음은 목록의 슬라이싱 함수를 분석한 것입니다. 🎜🎜🎜🎜rrreee🎜🎜🎜결론🎜🎜🎜

    위의 sq_slice 함수에 해당하는 슬라이싱 함수에서 볼 수 있듯이 슬라이싱을 사용할 때 왼쪽 및 오른쪽 첨자가 시퀀스 길이보다 크면 시퀀스 길이에 다시 할당되므로 초기 슬라이싱은 다음과 같습니다. print a[10:20] , 实际上运行的是: print a4:4 . 이 분석을 통해 첨자가 객체의 길이보다 큰 슬라이스를 만나도 더 이상 혼란스럽지 않을 것입니다~

위 내용은 Python의 시퀀스 슬라이싱 첨자 문제에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.