该一系列python学习笔记都是根据《Python基础教程(第3版)》内容所记录整理的

1.通用的序列操作

  有几种操作适用于所有序列,包括索引、切片、相加、相乘成员资格检查。另外,Python还提供了一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素。

  1.1 索引

    序列中的所有元素都有编号——从0开始递增,通常我们称这些编号为下标,即为索引(indexing)。你可以像下面这样使用编号来访问各个元素: 

    str1 = ['java','c++','C','C#','python']

    print(str1[0])     ——>  java
    print(str1[-1])     ——>  python

  1.2 切片

    除了使用索引来访问当个元素外,还可使用切片(slicing)来访问特定范围内的元素。为此,可使用两个索引,并用冒号分隔:

    str1 = ['java','c++','C','C#','python']

    print(str1[0:4])     ——>  ['java','c++','C','C#']

    如你所见,切片适用于提取序列的一部分,其中编号非常重要:第一个索引是包含的第一个元素的编号,但第二个索引是切片后余下的第一个元素的编号(这跟java的substring有点儿相似)。

    1.2.1 绝妙的简写

      str1 = ['java','c++','C','C#','python']

      print(str[:4])   ——>  ['java','c++','C','C#']
      print(str[-4:])   ——>  ['c++','C','C#','python']
      print(str[:])   ——>  ['java','c++','C','C#','python']
      print(str[-3:0])   ——>  []

      最后一个print为什么输出为 [] 呢,事实上,当切片的第一个索引指定的元素位于第二个索引指定的元素后面时,返回结果就为 空序列,即 []

    1.2.2 更大的步长

      在执行切片操作时,你显示或隐示的指定起点和终点,但通常省略另一个参数,即步长。在普通切片中,步长为1,即意味着从一个元素移到下一个元素。

      str1 = ['java','c++','C','C#','python']

      print(str[::2])   ——>  ['java','C','python']

      当然,步长不能为0,否则无法向前移动,但可以为负数,即从右向左提取元素。

      str1 = ['java','c++','C','C#','python']

      print(str[::-1])   ——>  ['python','C#','C','c++','java']

  1.3 序列相加

    可以使用加法运算符来拼接序列。(一般而言,不能拼接不同类型的序列)

    str1 = ['java','c++','C']

    str2 = ['C#','python']

    print(str1 + str2)  ——>  ['java','c++','C','C#','python']

  1.4 乘法

    将序列与数 x 相乘时,将重复这个序列 x 次来创建一个新序列。

    str1 = [0]

    print(str1 * 5)  ——> [0,0,0,0,0]

    print([None] * 5)  ——> [None,None,None,None,None]

    None 表示空

  1.5 成员资格

    要检查特定的值是否包含在序列中,可以使用运算符 in 。包含返回True,不包含时返回False。

    str1 = ['java','c++','C','C#','python']

    print('java' in str1)  ——>True

  1.6 长度、最小值和最大值

    内置函数lenminmax 很有用,其中函数len返回序列包含的元素个数,而min和max分别返回序列中最小值和最大值的元素。

    str1 = ['java','c++','C','C#','python']

    print(len(str1))  ——> 5

    print(min(str1))  ——> C
    print(max(str1))  ——> python

2.列表:Python的主力

  2.1 函数list

    可将任何序列(如字符串)作为list的参数。list实际上是一个类,而不是函数。

    print(list('java'))  ——>['j','a','v','a']

    提示:要将字符列表转为字符串,可使用  ''.join(somelist)

  2.2 基本的列表操作

    可以对列表执行所有的标准序列操作,如索引、切片、拼接、相加和相乘。

    2.2.1 修改列表:给元素赋值

      使用索引表示法给特定位置的元素赋值,如 str1[0] = 'js'

    2.2.2 删除元素

      使用 del 语句删除元素。

      str1 =  ['java','c++','C','C#','python']

      del str1[0]

      print(str1)  ——>  ['c++','C','C#','python']

    2.2.3 给切片赋值

      使用切片赋值,可以同时给多个元素赋值,并且可将切片替换为长度与其不同的序列。

      str1 =  ['java','c++','C','C#','python']

      str1[0:1] = ['java','js']

      print(str1)  ——> ['java','js','c++','C','C#','python']

      使用切片赋值还可以在不替换原有元素的情况下 插入 新元素。

      str1 =  ['java','c++','C','C#','python']

      str1[1:1] = ['js']

      print(str1)  ——> ['java','js','c++','C','C#','python']

      还可以进行 删除 元素。

      str1 =  ['java','c++','C','C#','python']

      str1[1:4] = []

      print(str1)  ——> ['java','python']

  2.3 列表方法

    2.3.1 append

      方法append用于将一个对象附加到列表末尾。append方法不会返回修改后的新列表,而是直接修改旧列表。

      str1 = ['java','c++','C','C#','python']

      str1.append('js')

      print(str1)  ——> ['java','c++','C','C#','python','js']

    2.3.2 clear

      方法clear就地清空列表内容。如:str1.clear(),类似与切片赋值语句str1[:] = []

    2.3.3 copy

      方法copy赋值列表。(类似与java的深拷贝)

    2.3.4 count

      方法count计算指定的元素在列表中出现的次数。

      str1 = ['java','c++','C','C#','python','java']

      print(str1.count('java'))  ——> 2

    2.3..5 extend

      方法extends能够将多个值附加到列表末尾。主要用于使用一个列表来扩展另一个列表。

      str1 = ['java']

      str2 = ['js']

      print(str1.extend(str2))  ——> ['java','js']

    2.3.6 index

      方法index在列表中查找指定值 第一次出现的索引。如str.index('java')

    2.3.7 insert

      方法insert用于将一个对象插入列表。如str1.insert(0,'js')

      第一个参数表示插入后该元素的索引。

    2.3.8 pop

      方法pop从列表中删除一个元素(默认为最后一个元素),并返回这一元素。

      str1 = ['java','c++','C','C#','python']

      print(str1.pop())  ——> python

      print(str1.pop(0))  ——> java

      print(str1)  ——> ['c++','C','C#']

    2.3.9 remove

      方法remove用于删除第一个为指定值得元素。

      remove删除列表中不存在的元素会报错,所有一般要先用 x in somelist 进行判断验证后在使用remove方法

    2.3.10 reverse

      方法reverse按相反的顺序排列列表中的元素。如:str1.reverse()

    2.3.11 sort

      方法sort用于对列表就地排序。

      str1 = [4,2,3,1]

      print(x.sort())  ——> [1,2,3,4]

      函数sorted对列表进行排序,返回排序后的数组

      str1 = [4,2,3,1]

      str2 = sorted(str1)

      print(str2)  ——> [1,2,3,4]

    2.3.12 高级排序

      方法sort和sorted接受两个可选参数:key和reverse,这两个参数通常是按名称指定的,称为关键字参数。参数key类似于参数cmp:你将其设置为一个用于排序的函数。然而,不会直接使用这个函数来判断一个元素是否比另一个函数小,而是使用它来为每个元素创建一个键,再根据这些键对元素进行排序。

      比如,要根据长度对元素进行排序,可将参数key设置为函数len。

      str1 = ['java','c++','js']

      str1.sort(key = len)

      print(str1)  ——> ['js','c++','java']

      对于另一个关键字参数reverse,只需将其指定为一个真值(True和False),以指出是否要按相反的顺序对列表进行排序。

      str1 = ['java','c++','js']

      str1.sort(reverse = True)

      print(str1)  ——> ['js','c++','java']

3 元祖:不可修改的序列

  与列表一样,元祖也是序列,唯一的差别在于元祖是不能修改的。(不能修改元祖中元素指定的地址)

  空元祖()

  只有一个元素的元祖(23,)       注意逗号必须要

  tuple函数,将一个序列作为参数,并将其转换为元祖。如果参数已经是元祖,就原封不动的返回。

  str1 = tuple(['java','js'])

  print(str1)  ——> ('java','js')

python学习笔记(一)、列表和元祖的更多相关文章

  1. python学习-day12:列表、元祖、字典介绍和内置

    list:列表 >>>----可以被修改.修改成元素,元素可以使单独的数字,也可以是:新的list. 通过:链表..每个元素存储的时候,同时会指向下一个元素. 二.list编辑修改方 ...

  2. python学习笔记整理——列表

    Python 文档学习笔记 数据结构--列表 列表的方法 添加 list.append(x) 添加元素 添加一个元素到列表的末尾:相当于a[len(a):] = [x] list.extend(L) ...

  3. 干货!Python中字符串、列表、元祖、字典,集合之间的转换

    一.字符串的转化 1.字符串转换成列表 字符串转换成list 的时候,str可以作为迭代对象,直接放入:也可以使用split对字符串进行切割.然后返回list s = '1a1b1c' print(l ...

  4. Python学习笔记---切片 列表 元祖 字典 集合

    列表[1,2,3,2]#[] 元祖(1,2,3,2)#() 字典{1:2,3:2}#{} 集合{1,2,3,2}#{} 1,集合与列表的区别,集合里不能有重复元素 2.字典与集合的区别,都是用花括号表 ...

  5. 【Python基础学习五】列表,元祖,字典

    1.列表(list) 列表是Python的一种内置数据类型,list是一种有序的集合,可以随时添加和删除其中的元素,就像动态数组一样.获取list中的元素用角标获取,角标可以使用正角标,也可以使用负角 ...

  6. python学习笔记-列表和字典

    由于最近在看深度学习的代码,看到需要建立字典和列表来存储什么东西的时候,就想要去把字典和列表好好的了解清楚,其应用范围,差别,等等东西 首先我们来介绍,在python中存在如下的数据结构:列表list ...

  7. Python学习记录4-列表、元祖和集合

    list列表 一组由有序数据组成的序列 数据有先后顺序 数据可以不是一类数据 list的创建 直接创建,用中括号创建,内容直接用英文逗号隔开 使用list创建 列表包含单个字符串的时候是一个特例 # ...

  8. python基础知识之列表、元祖、字典、集合、字符串。

    1.可变类型之列表 列表用 [ ]来定义是可变的,可以通过索引值来去查询里面的字段可以可以追加,删除等 names='zhangyang guyun xiangpeng xuliangwei' nam ...

  9. Python学习日记(四) 集合和元祖

    元祖的特性:是一个只读列表.可以循环.可以切片,修改数据遵循'儿子'不能改但'孙子'可能可以改. iterable:可迭代对象(元祖.列表.字串.集合) 元祖宣告方式: tu = (1,2,3,['a ...

  10. 学习笔记(1):零基础掌握 Python 入门到实战-列表与元祖到底该用哪个?(二)...

    立即学习:https://edu.csdn.net/course/play/26676/338778?utm_source=blogtoedu 列表不能通过增加索引增加元素 可以使用list中的app ...

随机推荐

  1. Js实现继承的方法

    原型的作用:1.将公共部分放入原型中,这样构造出的多个实例对象的公共部分只会占用一个公共空间,实现数据共享和节省内存空间 2.通过原型实现继承:构造函数模拟 "类"这个面向对象的概 ...

  2. Android中系统键盘的自动弹出、隐藏和显示

    一.需求 在开发Android app过程中经常用到EditText,需要在界面加载完成后自动弹出系统键盘,更希望可以控制键盘的隐藏和显示,本文介绍其实现方法. 二.系统键盘的自动弹出 @Overri ...

  3. Player 播放器开源项目总结

    Android开发中,我们不免会遇到播放器相关开发的需求,以下是本人之前star的开源项目,供大家参考: 一.NBPlayer 项目地址:https://github.com/renhui/NBPla ...

  4. 【MySQL】常用监控指标及监控方法

    对之前生产中使用过的MySQL数据库监控指标做个小结.  指标分类 指标名称 指标说明 性能类指标 QPS 数据库每秒处理的请求数量 TPS 数据库每秒处理的事务数量 并发数 数据库实例当前并行处理的 ...

  5. Oracle创建表空间创建用户和用户授权

    今天要创建一个Oracle用户,然后发现sql不太记得了,然后只能再去找找资料,发现这样效率并不是很高,所以记录成博客,有需要就直接从博客复制. 下面是我简单整理的,有需要可以参考. --创建表空间 ...

  6. [部署]CentOS安装MariaDB

    环境 虚拟机:VMWare10.0.1 build-1379776 操作系统:CentOS7 64位 步骤 1.添加MariaDB的yum仓库源,在/etc/yum.repos.d/ 下建立 Mari ...

  7. 性能瓶颈之Mapping

    如果Source和Target都不存在性能上的瓶颈,则问题可能会出在Mapping 如何判定Mapping存在性能瓶颈 1)  在session log中读取thread statistics和wor ...

  8. 安卓TabLayout+ViewPager实现切页

    安卓使用TabLayout+ViewPager+Fragment 实现页面切换,可实现左右滑动切换视图界面和点击切换 可自定义菜单栏是在顶部还是在底部 一.实现效果: 二.实现过程: 2.1 一些重要 ...

  9. Spring Boot 最核心的 3 个注解详解

    最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过.然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失望 ...

  10. Linux下安装、启动、停止mongodb

    1.下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装) curl .tgz # 下载 tar .tgz # 解压 mv mongodb/ /usr/local/mongodb ...