该一系列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. keepalived给LVS带来了什么

    LVS+Keepalived 1>Keepalived简介  Keepalived是Linux下一个轻量级别的高可用解决方案,高可用(High Avalilability,HA),其实两种不同的 ...

  2. Linux基础操作命令

    一.系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 – (SMBIO ...

  3. 与Servlet相关的类

    有4个有关的类,通过servlet可以获得其中的三个,然后通过ServletConfig间接获取ServletContext.1. ServletConfig该类是在Servlet容器初始化Servl ...

  4. Dubbo 源码分析 - 服务导出

    1.服务导出过程 本篇文章,我们来研究一下 Dubbo 导出服务的过程.Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑.整个逻辑大致可 ...

  5. 细说MySQL表操作

    目录 语法 查看表结构 查看所有的表 删除表 查看创建表的语句 修改表的字符集和校验规则 修改表名 在表中添加新字段 修改表的字段名 修改表中字段的属性 删除表中的某个字段 设置某个字段为主键 把某个 ...

  6. JavaScript中的日期时间函数

    1.Date对象具有多种构造函数,下面简单列举如下 new Date() new Date(milliseconds) new Date(datestring) new Date(year, mont ...

  7. 【Spark调优】小表join大表数据倾斜解决方案

    [使用场景] 对RDD使用join类操作,或者是在Spark SQL中使用join语句时,而且join操作中的一个RDD或表的数据量比较小(例如几百MB或者1~2GB),比较适用此方案. [解决方案] ...

  8. Target优化

    优化目标主要包括以下几方面: 1 优化平面文件 如果目标平面文件在某机器的共享目录下,则该机器最好是专门用于文件存储的,如果还应用于其他非文件存储任务,则会降低加载效率 如果Integration s ...

  9. git push 时发生 error: failed to push some refs to 错误 (解决办法)

    出现问题的原因:在github上更新了README.md,没有更新到本地仓库.而在本地git仓库又修改了文件,这时使用 git push origin master 推送到远程仓库后就出现了下面的问题 ...

  10. VueJs(11)---vue-router(命名路由,命名视图,重定向别名,路由组件传参)

    vue-router 上篇文章讲了第一篇vue-router相关文章,文章地址:VueJs(10)---vue-router(进阶1) 一.命名路由 有时候,通过一个名称来标识一个路由显得更方便一些, ...