码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 7 切片及应用


    文章目录

      • 一、切片
        • 1.1 对list进行切片
        • 1.2 倒序切片
        • 1.3 对字符串切片
      • 二、练习题
      • 小结

    一、切片

    1.1 对list进行切片

    取一个list的部分元素是非常常见的操作。比如,一个list如下:

    L = ['Adam', 'Lisa', 'Bart', 'Paul']
    
    • 1

    取前3个元素,应该怎么做?
    笨办法:

    [L[0], L[1], L[2]]
    ['Adam', 'Lisa', 'Bart']
    
    • 1
    • 2

    之所以是笨办法是因为扩展一下,取前N个元素就没辙了。

    取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:

    r = []
    n = 3
    for i in range(n):
    ...     r.append(L[i])
    ... 
    r
    ['Adam', 'Lisa', 'Bart']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。

    对应上面的问题,取前3个元素,用一行代码就可以完成切片:

    L[0:3]
    ['Adam', 'Lisa', 'Bart']
    
    • 1
    • 2

    L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。

    如果第一个索引是0,还可以省略:

    L[:3]
    ['Adam', 'Lisa', 'Bart']
    
    • 1
    • 2

    也可以从索引1开始,取出2个元素出来:

    L[1:3]
    ['Lisa', 'Bart']
    
    • 1
    • 2

    只用一个 : ,表示从头到尾:

    L[:]
    ['Adam', 'Lisa', 'Bart', 'Paul']
    
    • 1
    • 2

    因此,L[:]实际上复制出了一个新list。

    切片操作还可以指定第三个参数:

    L[::2]
    ['Adam', 'Bart']
    
    • 1
    • 2

    第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。
    把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple。

    1.2 倒序切片

    对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:

    L = ['Adam', 'Lisa', 'Bart', 'Paul']
    L[-2:]
    ['Bart', 'Paul']
    
    L[:-2]
    ['Adam', 'Lisa']
    
    L[-3:-1]
    ['Lisa', 'Bart']
    
    L[-4:-1:2]
    ['Adam', 'Bart']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    记住倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。

    1.3 对字符串切片

    字符串 'xxx’和 Unicode字符串 u’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

    'ABCDEFG'[:3]
    'ABC'
    'ABCDEFG'[-3:]
    'EFG'
    'ABCDEFG'[::2]
    'ACEG'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。
    Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

    二、练习题

    1. range()函数可以创建一个数列:
      range(1, 101)
      [1, 2, 3, …, 100]
      请利用切片,取出:
    • 前10个数;
    • 3的倍数;
    • 不大于50的5的倍数。
    L = range(1, 101)
    
    print L[:10]
    print L[2::3]
    print L[4:51:5]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 利用倒序切片对 1 - 100 的数列取出:
    • 最后10个数;
    • 最后10个5的倍数。
    L = range(1, 101)
    print L[-10:]
    print L[-46::5]
    
    • 1
    • 2
    • 3
    1. 字符串有个方法 upper() 可以把字符变成大写字母:
    'abc'.upper()
    'ABC'
    
    • 1
    • 2

    但它会把所有字母都变成大写。请设计一个函数,它接受一个字符串,然后返回一个仅首字母变成大写的字符串。
    提示:利用切片操作简化字符串操作。

    def firstCharUpper(s):
        return s[0].upper()+s[1:]
    
    print firstCharUpper('hello')
    print firstCharUpper('sunday')
    print firstCharUpper('september')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    小结

    本文对Python中切片及其作用进行了介绍,切片可以截取想要的数据,是非常基础的功能。

  • 相关阅读:
    21天打卡挑战学习MySQL——《MySQL表管理》第二周 第五篇
    iOS开发Swift-14-反向传值,右滑删除,语言本地化,编辑换序,DeBug,addTarget-待办事项App(3)...
    R语言使用caret包的featurePlot函数可视化变量的重要性、通过分组数据分布差异查看变量对于预测目标变量的判别性、通过可视化密度图进行判别分析
    Python数据分析与机器学习33-K-Means实例
    [要素察觉]C语言七讲:结构体及C++引用讲解
    提升Mac运行速度的操作步骤,这种Mac提速方法很管用
    【配电网重构】基于yalmip求解含sop+二阶锥配电网重构附matlab代码
    如何一键进行Win11系统的重装?
    Spring事务(Transaction)管理高级篇一栈式解决开发中遇到的事务问题
    C#多线程学习(二) 如何操纵一个线程
  • 原文地址:https://blog.csdn.net/qq_59949081/article/details/134433338
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号