1. 对list进行切片

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

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

取前3个元素,应该怎么做?

笨办法:

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

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

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

>>> r = []
>>> n = 3
>>> for i in range(n):       r.append(L[i])
>>> r
['Adam', 'Lisa', 'Bart']

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

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

>>> L[0:3]
['Adam', 'Lisa', 'Bart']

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

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

>>> L[:3]
['Adam', 'Lisa', 'Bart']

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

>>> L[1:3]
['Lisa', 'Bart']

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

>>> L[:]
['Adam', 'Lisa', 'Bart', 'Paul']

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

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

>>> L[::2]
['Adam', 'Bart']

第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。

list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple。

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。倒序切片包含起始索引,不包含结束索引。

3. 对字符串切片

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

>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[-3:]
'EFG'
>>> 'ABCDEFG'[::2]
'ACEG'

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

【廖雪峰python入门笔记】切片相关推荐

  1. 【廖雪峰python入门笔记】列表生成式

    1. 生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, ...

  2. 【廖雪峰python入门笔记】迭代

    1. 迭代 在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration). 在Python中,迭代是通过for ...

  3. 【廖雪峰python入门笔记】函数

    1. 函数 我们知道圆的面积计算公式为: S = πr² 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = ...

  4. 【廖雪峰python入门笔记】dict

    1. dict 我们已经知道,list和tuple 可以用来表示顺序集合,例如,班里同学的名字: ['Adam', 'Lisa', 'Bart'] 或者考试的成绩列表: [95, 85, 59] 但是 ...

  5. 【廖雪峰python入门笔记】for循环

    list或tuple可以表示一个有序集合.如果我们想依次访问一个list中的每一个元素呢?比如 list: L = ['Adam', 'Lisa', 'Bart'] print(L[0]) print ...

  6. 【廖雪峰python入门笔记】if语句

    1. if语句及缩进规则 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现: age = 20 if ...

  7. 【廖雪峰python入门笔记】tuple_创建单元素

    tuple和list一样,可以包含 0 个.1个和任意多个元素. 包含多个元素的 tuple,前面我们已经创建过了. 包含 0 个元素的 tuple,也就是空tuple,直接用 ()表示: t = ( ...

  8. 【廖雪峰python入门笔记】list_按照索引访问

    1. 按照索引访问list Python按照索引访问list 由于list是一个有序集合,所以,我们可以用一个list按分数从高到低表示出班里的3个同学: L = ['Adam', 'Lisa', ' ...

  9. 【廖雪峰python入门笔记】list_创建

    1. list 列表:list 1. 是Python内置的一种数据类型 2. 是一种有序的集合 3. 可以随时添加和删除其中的元素 比如,列出班里所有同学的名字,就可以用一个list表示: ['Mic ...

最新文章

  1. python可以从事什么工作-学Python能干什么工作?工作前景怎么样?
  2. LeetCode精讲题 10正则表达式匹配(动态规划)
  3. mybatis 学习笔记:mybatis 初认识
  4. C#与数据库访问技术总结(十七)
  5. 【.NET 遇上 GraphQL】 ChilliCream 平台介绍
  6. C++ Editbox换行问题
  7. exe程序的启动过程
  8. HttpComponents组件探究 - HttpClient篇
  9. 【网络攻防技术】实验八——SQL注入实验
  10. AAAI17最佳论文:Label-Free Supervision of Neural Networks with Physics and Domain Knowledge
  11. 将Hexo个人博客部署到个人云服务器--最详细踩坑教程
  12. 常见bootloader介绍
  13. 基于设备指纹零感验证系统
  14. 大唐“痴情”男女-白居易-湘灵
  15. gateway官网解读(三)
  16. 华硕B250主板组装机安装win7及office2010
  17. 怎么让Eclipse对html和js代码自动提示
  18. Win10校园网宽带连接频繁秒断
  19. WindowsScript
  20. 解决使用selenium库出现的“Message: 'chromedriver' executable may have wrong permissions”问题

热门文章

  1. AngularJS2.0 教程系列(一)
  2. 学习-现代交换原理与通信技术
  3. 敏捷开发日常跟进系列之二:燃尽图(中)
  4. Task02:青少年软件编程(Scratch)等级考试模拟卷(二级)
  5. 青少年编程竞赛交流群周报(第036周)
  6. 【青少年编程(第27周)】报名考级的小朋友注意截止时间!
  7. Matlab与线性代数 -- 稀疏矩阵的图形显示
  8. 【Python】zip函数
  9. “香山”处理器产生背后的逻辑
  10. 清华团队让 AI 写诗“更上一层楼”,诗歌图灵测试迷惑近半数玩家