线性结构的总结

列表list  元组tuple  字符串str  bytes  bytearray的共同点:

  • 都是顺序存储、顺序访问的;
  • 都是可迭代对象;
  • 都可以通过索引访问

线性结构的特征:

  • 可迭代
  • 可通过len获取长度
  • 可以使用下标操作符通过索引访问
  • 可以切片

补充三个函数:

  • enumerate() 同时获取index和value
  • next()获取一个迭代器的下一个值
  • iter()把一个可迭代对象转化成一个迭代器

切片操作[start:stop]

# 注意:以下几条规则的优先级,是按照顺序依次排序的

In [12]: lst=list(range(10))
In [13]: lst
Out[13]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 访问lst的一段,从start开始到stop结束,但不包含stop
In [14]: lst[3:7]
Out[14]: [3, 4, 5, 6] # 当start省略时表示从头开始,当stop省略时表示直到末尾
In [15]: lst[:7]
Out[15]: [0, 1, 2, 3, 4, 5, 6] In [16]: lst[3:]
Out[16]: [3, 4, 5, 6, 7, 8, 9] In [17]: lst[:]
Out[17]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 支持负数索引,负数索引实际上可以转化为 len(lst)+index
In [18]: lst[-5:-3] //[10+(-5)=5,10+(-3)=7]
Out[18]: [5, 6] In [25]: lst[3:-1] //[3,10+(-1)=9]
Out[25]: [3, 4, 5, 6, 7, 8] # 当start>=stop时,返回空列表
In [21]: lst[100:] //100>-1
Out[21]: [] In [22]: lst[:-100] //0>10+(-100)
Out[22]: [] In [23]: lst[3:1] //3>1
Out[23]: [] In [24]: lst[3:3] //3=3
Out[24]: [] # 当start超出索引范围start=0,当stop超出索引范围stop=-0
In [19]: lst[-100:]
Out[19]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [20]: lst[-100:100]
Out[20]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[start:stop:step]

In [27]: lst[::2]
Out[27]: [0, 2, 4, 6, 8] In [28]: lst[::-2]
Out[28]: [9, 7, 5, 3, 1] In [30]: lst[::-1]
Out[30]: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] In [35]: lst[10:1:-2]
Out[35]: [9, 7, 5, 3] In [36]: lst[10:1:2]
Out[36]: []

命名切片slice( )

items=[0,1,2,3,4,5,6]
a=slice(2,4)
print(a.start,a.stop,a.step) #切片的start、stop、step三元组slice()中都可以指定
2 4 None
print(a)
slice(2, 4, None) #使用已命名的a,可以做什么?
print(items[a]) #等价于print(items[2:4])
[2, 3]
items[a]=[10,11];print(items)
[0, 1, 10, 11, 4, 5, 6]
del items[a];print(items)
[0, 1, 4, 5, 6]

[PY3]——内置数据结构(9)——线性结构与切片/命名切片slice()的更多相关文章

  1. [PY3]——内置数据结构(6)——集合及其常用操作

    集合及其常用操作Xmind图          集合的定义 # set( ) # {0,1,2} //注意不能用空的大括号来定义集合 # set(可迭代对象) In [1]: s=set();type ...

  2. [PY3]——内置数据结构(8)——解构与封装

    ### 解构的理解与用法 ### 解构是python很有特色的一个功能,被很多语言借鉴(例如ES6) # 元素按照顺序赋值给变量 In [31]: lst=list(range(5)) In [32] ...

  3. [PY3]——内置数据结构(7)——字典及其常用操作

    字典及其常用操作Xmind图 关于字典 字典是一种key-value结构 字典是无序的 字典的定义 # {}大括号可以直接定义一个空字典 In [1]: d={};type(d) Out[1]: di ...

  4. [PY3]——内置数据结构(1)——列表及其常用操作

    列表及其常用操作_xmind图         about列表 列表是一个序列,用于顺序存储数据 列表分为两种:ArrayList(用数组实现).LinkedList(用链表实现) 定义与初始化 #l ...

  5. [PY3]——内置数据结构(5)——字符串编码

    py2和py3中关于字符串的最大区别? python2中只有 unicode类型 而python3中有 string bytes两种类型 关于string和bytes的区分? 1.str是文本序列.b ...

  6. [PY3]——内置数据结构(2)——元组及其常用操作

    定义和初始化 #tuple() 使用工厂函数tuple定义一个空元组 #() 使用圆括号定义一个空元组 #(1,2,3) 使用圆括号定义有初始值的元组 #tuple(可迭代对象) 把可迭代对象转换为一 ...

  7. [PY3]——内置数据结构(3)——字符串及其常用操作

    字符串及其常用操作xmind图 字符串的定义 1. 单引号/双引号 In [1]: s1='hello world' In [2]: s1="hello world" 2. 三对单 ...

  8. [PY3]——内置数据结构(4)——字符串格式化(format)

    字符串格式化是拼接字符串的一种手段 join和+拼接字符串的方法,难以控制格式 printf style 字符串格式化 这种方法是从c语言继承过来的 # 待格式化的字符串:一个字符串存在占位符 In ...

  9. 内置数据结构(list)

    列表.元组.字符串.字典和集合是python内置的数据结构,也可以叫内置容器.前3个是线性结构,线性结构可以切片操作.解包和封包操作. dir()方法可以查看对象拥有哪些属性和方法. help()方法 ...

随机推荐

  1. CodeIgniter使用中写的一些文章

    CI的captcha替代类库:  http://www.ifixedbug.com/posts/codeigniter-captcha-library 原生的captcha不是太好用,自己组装一个吧. ...

  2. DNS服务及相关概念

    DNS:域名服务器:Domain Name Server IANA:互联网号码管理局:Internet Assigned Numbers Authority ICANN:互联网名称与数字地址分配机构: ...

  3. pageadmin CMS网站建设教程:站点添加自定义字段

    首先看看pagedmin默认的站点设置都有什么,如下图: 这里只有一些最基本的参数设置,用过3.0版本或用过其他公司开发的cms的用户应该有这种体验,在站点设置中可以设置logo图片,备案号,底部内容 ...

  4. pageadmin网站制作 怎么验证sql用户名和密码的正确性

    使用pageadmin建站系统的时候,不懂可以参考官网教程. 1.打开SQL Server Management Studio会弹出如下界面. 第一个箭头指向的就是服务器名称,如果用ip无法连接sql ...

  5. iOS UIText 或 UILabel 显示 HTML 并正确选用编码

    有的时候我们可能会选用 UIText 或 UILabel 来显示 HTML 代格式的文字. NSAttributedString *html = [[NSAttributedString alloc] ...

  6. Android 屏幕适应

    基础知识: 屏幕密度: Density-independent pixel (dp):密度无关像素单位(一个相对的值).1dp 的大小相当于一个 160 dpi 屏幕上一个像素的大小. 计算方法:px ...

  7. LOJ#3085. 「GXOI / GZOI2019」特技飞行(KDtree+坐标系变换)

    题面 传送门 前置芝士 请确定您会曼哈顿距离和切比雪夫距离之间的转换,以及\(KDtree\)对切比雪夫距离的操作 题解 我们发现\(AB\)和\(C\)没有任何关系,所以关于\(C\)可以直接暴力数 ...

  8. spring管理hibernate session的问题探究

    我们再用spring管理hibernate的时候, 我们会继承HibernateDaoSupport 或者HibernateTemplate类. 我们不知道这两个类之间有什么关系. 也没有去关闭ses ...

  9. RHEL安装oracle客户端(版本为11.2)

    RHEL安装oracle客户端(版本为 11.2) 1.获取超级管理员 命令:su - 输入root密码 2.安装依赖包: 命令:yum install -y binutils compat-libs ...

  10. 8102 年的现代 Web 开发最佳实践(笑)

    简评:8102 年了,现在 web 开发的最佳实践是什么,让本文来告诉你.原文只提到一部分,可以查看 reddit 上对此文的评论查看补充的最佳实践 https://old.reddit.com/r/ ...