+运算符操作

并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中,这样,会涉及大量的复制操作,对于操作大量元素不建议使用

extend()方法

将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象

insert()插入元素

使用 insert()方法可以将指定的元素插入到列表对象的任意指定制定位置,这样会让插入位置后面所有的元素进行移动,会影响处理速度,涉及大量元素时,尽量避免使用。类似发生这种移动的函数还有:remove(),pop(),del()。它们在删除非尾部元素时也会发生操作位置后面元素的移动

通过索引直接访问元素

索引的区间在【0,列表长度-1】这个范围,超过这个范围则会报错

index()获得指定元素在列表中首次出现的索引

语法是:index(value,[start.[end]])

其中 start 和 end 指定了搜索的范围

count()获得指定元素在列表中出现的次数

字符串

字符串的创建

可以使用引号(单引号’,双引号’‘或三引号’‘’)来创建字符串

可以使用 str 类的构造函数 str()

python 的三引号

python 的三引号(三个单引号或三个双引号均可)用于字符串跨多行,字符串中可以包含换行符,制表符以及其他特殊字符

字符串中值的访问(切片:SLICE)

python 不支持字符类型,即使是单个字符,python 也将其视为一个字符串来使用,访问子串,实际上就是用方括号来截取字符串,有的文献称之为“切片运算”

tuple

将一个可迭代对象转换成元组

返回最小值和最大值

列表,元组和字符串的共同点

1,都可以通过索引获取每一个元素

2,第一个元素的索引值都是 0

3,都可以通过切片的方法获取一个范围

4,都有很多共同的运算符

列表是可变序列。

元组和字符串是不可变序列

+ *

序列的加法表示两个序列进行拼接

乘法表示将序列进行重复(即拷贝)

sorted()函数

返回的是一个全新的列表,而原来的列表并不会受影响

案例

当我们单独传入这个 t 列表的时候,它对比的是列表中的每一个元素,这里的每一个元素又是字符串,所以它对比的是字符串的每一个字符的编码值

key 函数指定的是一个干预排序算法的函数

all()&any()

all()是判断可迭代对象中是否所有元素的值都为真

any()是判断可迭代对象中是否存在某个元素的值为真

enumerate()

enumerate()函数用于返回一个枚举对象,它的功能就是将可迭代对象中的每个元素及从 0 开始的序号共同构成一个二元组的列表

zip()

zip ()函数用于创建一个聚会多个可迭代对象的迭代器。

它会将作为参数传入的每个可迭代对象的每个元素依次组合成元组,即第 i 个元组包含每个参数的第 i 个元素

map()

map()函数会根据提供的函数对指定的可迭代对象的每个元素进行运算,并将返回运算结果的迭代器

filter()

filter()函数会根据提供的函数对指定的可迭代对象的每个元素进行运算,并将运算结果为真的元素,以迭代器的形式返回

一个迭代器肯定是一个可迭代对象

可迭代对象可以重复使用而迭代器则是一次性的

iter()把 x (可迭代对象)传过去,得到的结果给到 y,y 就是一个迭代器,通过 type()函数观察到这个区别

next()逐个将迭代器中的元素提取出来

元组 tuple

列表属于可变序列,可任意修改列表中的元素

元组属于不可变序列,不能修改元组中的元素

因此,元组没有增加元素,修改元素,删除元素相关的方法

只需掌握元组的创建和删除,元素的访问和计数即可

1,索引访问

2,切片操作

3,连接操作

4,成员关系操作

5,比较运算操作

6,计数:元组长度 len(),最大值 max(),最小值 min(),求和 sun()等

元组的创建

通过()创建元组,小括号可省略

如果元组只有一个元素,则必须后面加逗号,这是因为解释器会把(1)解释为整数 1,(1,)解释为元组

通过 tuple()创建元组

总结

tuple()可以接收列表,字符串,其他序列类型,迭代器等生成元组

list()可以接收元组,字符串,其他序列类型,迭代器等生成列表

元组的元素访问和计数

1, 元组的元素不能修改

2, 元组的元素访问,index(),count(),切片等操作,和列表一样

3, 列表关于排序的方法 list.sorted()是修改原列表对象,元组没有该方法,如果要对元组排序,只能使用内置函数 sorted(tupleObj),并生成新的列表对象

zip

zip(列表 1,列表 2,…)将多个列表对应位置的元素组合成为元组,并返回这个 zip 对象

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同

生成器推导式创建元组

1 ,从形式上看,生成器推导式与列表推导式类似,只是生成器推导式使用小括号

2,列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象

3,我们可以通过生成器对象,转化成列表或元组,也可以使用生成器对象的 next()方法进行遍历,或者直接作为迭代器对象来使用,不管什么方式使用,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象

元组总结

1,元组的核心特点是:不可变序列

2,元组的访问和处理速度比列表快

3,与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用

字典是“键值对”的无序可变序列,字典中的每个元素都是一个”键值对“,包含”键对象“和”值对象“,可以通过”键对象“实现快速获取,删除,更新对应的”值对象“

字典是 Python 中唯一实现映射关系的内置类型

列表中通过”下标数字”找到对应的对象,字典中通过”键对象“找到对应的”值对象“

1,”键“的任意的不可变数据,比如:整数,浮点数,字符串,元组

2,但是:列表,字典,集合这些可变对象,不能作为“键”

3,并且“键”不可重复

4,“值”可以是任意的数据,并且可以重复

字典的创建

1, 通过{},dict()来创建字典对象

2,通过 zip()创建字典对象

3,通过 fromkeys 创建值为空的字典

集合创建和删除

1.使用{}创建集合对象,并使用 add()方法添加元素

2,使用 set(),将列表,元组等可迭代对象转成集合。如果原来数据存在重复数据,则只保留一个

集合是 python 的基本数据类型,把不同的元素组合在一起便形成了集合,组成一个集合的成员称作该集合的元素(element)

集合分为两类:可变集合(set),不可变集合(frozenset)

可变集合可添加和删除元素,是非可哈希的,不能用作字典的键,也不能做其他集合的元素。

不可变集合与之相反

可变集合的创建

在一个集合中不能有相同的元素。相同的元素被自动删除

不可变集合创建

创建不可变集合应使用 frozenset()函数,不能使用大括号

不可变集合不能被修改

集合的遍历

因集合是无序的,不能使用索引来访问集合中的元素。可使用 for 循环可以遍历一个集合

元素访问的顺序依赖于它们在内部是如何存储的,输出中元素的顺序与创建集合时的顺序是不同的

无序使得可以实现高效的集合操作

增加和删除集合元素

如果要增加的元素没包含在集合中,它会被增加到集合中并且集合的大小加 1;

如果要增加的元素包含在集合中,则添加操作不会有效果,集合没有被修改。

如果元素存在,discard 方法会删除它,但是如果元素不是集合成员时,则不会有效果。

clear 方法删除集合中的所有元素,留下一个空集合

集合和列表都可以存储多个元素,两者不同:

  • 集合不能存储重复的元素
  • 集合中的元素是无序的,不能通过下标运算符来访问元素
  • 集合还支持如何判断集合关系以及四种集合运算
  • 列表的存储方式为顺序存储,而集合采用的存储方式更加负责。这使得在执行查找元素和删除元素的操作时,使用集合比使用列表的效率高
  • list 用来存储任意大小的数据集合
  • 一个列表中可以包含任意个数据,每个数据称为元素
  • 列表是 Python 中使用最频繁的数据类型,它是放在方括号([ ])内,用逗号分隔的一系列元素
  • 列表中元素的类型可以不同,它支持数字,字符串甚至可以包含列表。换言之,列表允许嵌套

列表的创建

1,变量名 = [ value1,value2,…]

2,通过 python 内置的 list 类的构造函数来创建列表

使用 list()可以将任何可迭代的数据转换成列表

列表元素的访问

通过下标运算符来访问元素。下标从 0 开始

python 可以使用负数下标访问列表元素。负数下标提供了按相反顺序访问元素的方法

一般地,负数下标的有效范围介于-1 和-len(列表变量)之间

列表的切片(list slicing)

列表的切片操作使用 list[start: end] 来返回列表 list 的一个片段,这个片段是原列表从下标 start 到 end-1 的元素所构成的一个新列表

起始下标和结束下标可以省略

如果省略起始下标,则起始下标默认为 0;

如果省略结束下标,则结束下标默认为列表长度,即截取到列表的最好一个元素

list[start: end: step]

step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当 step 省略时,默认为 1,即从左往右以增量 1 取值

列表的内置函数与其他方法

append()添加元素

在列表的末尾来添加一个指定的元素

缺点:每次只能添加一个元素

extend()允许直接添加一个可迭代对象

insert()在列表的任意位置来添加数据

有两个参数:1,指定待插入的位置

2,指定待插入的元素

remove()将指定的元素删除

  • 如果列表中存在多个匹配的元素,那么它只会删除第一个
  • 如果指定的元素不存在,那么程序就会报错

pop()删除某个位置上的元素

参数是元素的下标索引值

sort()直接实现排序

reverse()从大到小排序,原地反转列表中的元素

s.sort(key=None,reverse=False)---->对列表中的元素进行原地排序(key参数用于指定一个用于比较的函数;reverse参数用于指定排序结果是否反转

count()查找某个元素出现的次数

index() 查找某个元素的索引值

index(x,start,end)指定查找的开始和结束位置

copy()拷贝一个列表