zoukankan      html  css  js  c++  java
  • 为什么切片要忽略最后一个元素

    # 切片
    # 为什么切片和区间会忽略最后一个元素
    # 在切片和区间操作里不包含区间范围的最后一个元素是Python 的风格,这个习惯符合Python C和其他语言里以0作为起始下标的传统.
    # 当只有最后一个位置信息时,我们也可以快速看出切片和区间里有一个元素:range(3)和my_list[:3]都返回3个元素
    # 当起止位置信息都可见时,我们可以快速计算出切片和区间的长度,用后一个数减去前一个下标即可
    # 这样做也让我们可以利用任意一个下标来吧序列分割成不重叠的两部分: list[:x] list[x:]
    l = [10, 20, 30, 40, 50, 60]
    print(l[:2], "---", l[2:])  # 在下标2的地方分割
    
    # 对对象进行切片
    
    # 一个众所周知的秘密是,我们可以用s[a:b:c]的形式对s在a和b之间以c为间隔取值.
    # c的值还可以为负,负值意味着反向取值.
    s = "python"
    print(s[::2])
    print(s[::-1])
    print(s[::-2])
    
    # a:b:c这种用法只能作为索引或者下标用在[]中来返回一个切片对象.
    # 对seq[start:end:step]进行求值的时候,Python会调用seq.__getitem__(slice(start, end, step)).
    # 可以给切片命名,提示代码的可读性
    students = """
    0001    小明  16  99
    0002    小红  18  98
    0003    小李  17  99
    0004    小王  20  100
    """
    number = slice(0, 4)
    name = slice(8, 10)
    age = slice(12, 14)
    student_items = students.split("
    ")
    for item in student_items:
        print(item[number], "---", item[name], "---", item[age]) if item else None
    
    # 给切片赋值 如果把切片放在赋值语句的左边,或者把它作为del操作的对象,我们就可以对序列进行嫁接,切除或就地修改操作.
    l = list(range(10))
    print(l)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    l[2:5] = [20, 30]
    print(l)  # [0, 1, 20, 30, 5, 6, 7, 8, 9]
    del l[5:7]
    print(l)  # [0, 1, 20, 30, 5, 8, 9]
    l[3::2] = [11, 22]
    print(l)  # [0, 1, 20, 11, 5, 22, 9]
    l[2:5] = [100]  # 如果赋值的对象是一个切片,那么赋值语句的右侧必须是个可迭代对象,即便只有单独的一个值,也要把它转换成可迭代的序列.
    print(l)  # [0, 1, 100, 22, 9]
    l[2:4] = [11, 22, 33, 44, 66]  # 步长为1时,切片长度和赋值长度可以不等
    print(l)
    # l[::2] = [1, 2, 3, 4, 5]  # 步长不为1时,切片长度和赋值长度必须相等
    # ValueError: attempt to assign sequence of size 6 to extended slice of size 4
    
  • 相关阅读:
    Qt中暂停线程的执行(主线程和工作线程共用一把锁,一旦主线程将它锁上,工作线程就无法运行了,这也是一个办法)
    罗振宇 知识就是力量:怎样逼自己成为一个上进的人
    GammaRay 是一个允许你查看 Qt 应用程序甚至在某种程度上修改它的独特应用,可谓是 Debugger 的良好补充
    VSCode高效开发插件
    微软白板Excel xls列号数字转字母
    如何渡过中年危机
    增量数据同步中间件
    N位N进制里有多少个N
    Orchard Core学习一
    Consul做服务发现
  • 原文地址:https://www.cnblogs.com/zyyhxbs/p/13140938.html
Copyright © 2011-2022 走看看