想必很多人都使用过列表的切片,通过切片可以从列表中获取一个或多个元素,但你真的了解切片?

一、一般玩法

>>> name = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

>>> name[0:2]# 获取 0 - 2 中间的元素,不包括索引为 2 的元素

['a', 'b']

>>> name[:2]# 从 0 开始切,可省略 0

['a', 'b']

>>> name[1:]# 同样地,切到最后一个也可以省略最后的元素索引

['b', 'c', 'd', 'e', 'f', 'g', 'h']

二、列表步长

列表切片实际上还可以接收第三个参数:步长(默认情况为 1),来试试将其改为 2 会有说明变化?

>>> name[1:6:2]# 每隔 2 个元素才取出一个来

['b', 'd', 'f']

>>> name[::2]# 如果是从头到尾切,还可以写成这样

['a', 'c', 'e', 'g']

>>> name[::-1]# 同样地,步长还可以是负数,当步长为 -1 时,相当于复制一个反转的列表

['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']

>>> name[::-2]

['h', 'f', 'd', 'b']

容易出错的地方:

>>> name[7:2:-2]# 相当于从索引为 7 到 索引为 2 中,每隔 2 各元素取一个出来

['h', 'f', 'd']

>>> name[10:2:-2]# 对于超出索引的,默认是从最后一个元素开始取

['h', 'f', 'd']

>>> name[100:2:-2]

['h', 'f', 'd']

三、列表深浅拷贝

浅拷贝

>>> A = name[:]

>>> id(A)

2004289344072

深拷贝

>>> B = name

>>> id(B)

2004289245384

>>> id(name)

2004289245384

原理透析

Python 的变量就像一个 标签,或者说是一个名字,它通过指针指向元素值,可以理解为下图所示:

深拷贝指向原来的值,两者 ID一致,浅拷贝是从原来的值上复制一个副本出来。

四、面试题

1、列表 l = [1, 2, 3, 4, 5, 6, 7, 8, 9],那么 print(l[10:3:-2]) 为多少?

>>> l = [1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> print(l[10:3:-2])

[9, 7, 5]

2、输出值

A = 'apple'

B = A

B = 'banana'

print(A)

A 为字符串,是不可变类型,因此 A 的值始终不变,为:'apple'

3、输出值

A = ['apple']

B = A

B[0] = 'banana'

print(A)

= 是深拷贝,两者 ID 也相同,修改 B 会影响 A,修改 A 会影响 B,所以结果为: ['banana']

4、输出值

A = ['apple']

B = A[:]

B[0] = 'banana'

print(A)

[:] 是浅拷贝,只拷贝了第一层,修改不会有影响,所以结果为:['apple']

python列表切片规则_Python 列表切片相关推荐

  1. python列表浅复制_Python列表的深复制和浅复制示例详解

    一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码: l1 = [5, 4, 3, 2, 1] # 用 ...

  2. python list 深复制_Python列表的深复制和浅复制示例详解

    免费资源网,https://freexyz.cn/ 一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码 ...

  3. python list方法操作_Python 列表(List)操作方法详解

    参考文献来源于脚本之家 列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型.列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0 ...

  4. python一些简单操作_python列表的基本操作有哪些

    python列表的基本操作有:1.创建列表,只要把逗号分隔的不同的数据项使用方括号括起来:2.添加新的元素:3.遍历列表:4.访问列表中的值:5.从list删除元素. 相关免费学习推荐:python教 ...

  5. python处理列表中字典_Python 列表、元组、字典及集合操作详解

    一.列表 列表是Python中最基本的数据结构,是最常用的Python数据类型,列表的数据项不需要具有相同的类型 列表是一种有序的集合,可以随时添加和删除其中的元素 列表的索引从0开始 1.创建列表 ...

  6. python 元组 列表 字典区别_Python列表、元组、字典、集合、字符串的异同总结

    1.数据类型 列表.元组.字典.集合.字符串均属于python3的标准数据类型. 字符串和元组属于不可变数据,即创建后不可修改. 列表.字典.集合属于可变数据,即创建后可以修改元素. 2.创建有元素的 ...

  7. python列表比较方法_python列表常用方法

    list是一个类,用中括号括上,逗号分隔,元素可以是数字,字符,字符串,也可以是嵌套列表,布尔类型. 1.通过索引取值 li=[1,12,9,'age',['wangtianning',[19,'10 ...

  8. python数组排序返回索引_python列表排序返回索引

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我需要对列表进行排序,然后返回一个列表,其中包含列表中排序项的索引... 我有一 ...

  9. python列表反向排序_Python 列表排序方法reverse、sort、sorted详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ...

最新文章

  1. Prewitt 边缘检测
  2. ubuntu 将某个目录下的文件复制到_Linux下处理隐私骚操作
  3. .gitignore和.gitkeep有什么区别?
  4. Python-面向对象进阶
  5. python怎么用pip_python怎么使用pip工具
  6. 韵达基于云原生的业务中台建设 | 实战派
  7. Python编程专属骚技巧1
  8. 实现文件上传进度条功能
  9. js对象数组计算总计_如何计算数组中的对象
  10. Flutter 气泡背景效果 仿苹果桌面运动的气泡
  11. 【选手分享】你想知道的比赛思路这里都有!速查收!
  12. python bokeh_浅谈python可视化包Bokeh
  13. Jfinal中Cron4jPlugin使用
  14. Olympic Games -basketball
  15. python多元线性回归实例_关于多元线性回归分析——PythonSPSS
  16. spring-第十七篇之spring AOP基于注解的零配置方式
  17. 面向边缘计算的资源优化技术研究进展
  18. 软件测试技术(思维导图)
  19. python tif转jpg_怎样把TIF转化为JPG图片格式
  20. Unity3D中玩家的移动方式,三大类型,八种方式

热门文章

  1. FD.io VPP 20.05 官方文档 总目录:用户文档+开发文档+命令行
  2. __attribute__((visibility()))
  3. 汇编中bss,data,text,rodata,heap,stack段的作用
  4. java线程池读文件_多线程读取Java文件
  5. mybatis多数据源配置_随笔:springboot+mybatis 配置双数据源
  6. java string补空格_Java String字符串补0或空格详解
  7. c语言学习-输入一个十进制数,输出其对应的八进制数据
  8. pythons实现信号分帧
  9. OpenShift 4 之一些实用命令和技巧
  10. 使用基于JSON的实体在C#中缓存远程数据