zoukankan      html  css  js  c++  java
  • 序列的复杂切片问题

      切片的步长默认都是1,当步长为正数时,从左往右取数值,此时起始值(start)要小于终止值(end);当步长为负数时,从右往左取值,此时的起始值(start)要大于终止值(end)。

      当起始值(start)或终止值(end)为负数时,表示从右往左看。

    >>> s = 'abcdefgh'
    >>> s[:6:2]    # 从左往右取值
    'ace'
    >>> s[1:7:-1]    # 步长为负数,从右往左取值,此时的起始值(start)要大于终止值(end)。又因为1<7,所以什么也没有去到,返回空字符串
    ''
    >>> s[1:-2:2]    # 起始值(start)或终止值(end)为负数时,表示从右往左看,所以此时终止值为-2却会比起始值为1要大
    'bdf'
    >>> s[1:-2:-2]
    ''

      反转:

    >>> s1 = s[::-1]    # 返回一个新值
    >>> s1
    'hgfedcba'
    >>> s     # 原数据不变
    'abcdefgh'

      s[ : : -1]的本质是从右边(负号表示反方向)看这个列表,然后按照步长为1取列表中的元素,并生成新的列表;若果将-1换成1,就是从左边看这个列表。

      其他序列:元组、列表类似。

  • 相关阅读:
    收藏文章
    Python __func__
    Python 可变对象 & 不可变对象
    Kafka SASL ACL配置踩坑总结
    C++ 传递动态内存
    负数取反,单目运算“-”的运算
    C++重载运算符的理解
    c++ 随机函数用法
    static变量
    路由汇聚及其相关计算
  • 原文地址:https://www.cnblogs.com/wgbo/p/9580638.html
Copyright © 2011-2022 走看看