文章目录

  • 列表
  • 创建列表
  • 读取元素
  • 遍历列表
  • 修改元素
  • 检索元素
  • 删除元素
  • 字符串列表的转化
  • 其它常用函数
  • 元组
  • 创建元组
  • 访问元组
  • 修改元组
  • 删除元组
  • 常见操作
  • 常见使用场景
  • 字典
  • 创建字典
  • 字典查找
  • 遍历字典
  • 添加修改
  • 字典检索
  • 删除元素
  • 常用函数
  • 集合
  • 创建集合
  • 添加元素
  • 删除元素
  • 集合运算符
  • 数学集合运算
  • 组合数据类型的高级特性
  • 切片
  • 迭代
  • 列表生成式
  • 生成器
  • 迭代器


列表

列表(list)是Python内置的一种数据类型,是一种最具灵活性的有序集合对象类型,可以随时添加和删除其中的元素。


创建列表

通常使用左右方括号(即:[ 和 ])将数据元素包裹起来创建一个列表,如下所示:

list1 = [1,2,3,4,5]
list2 = ["a","b","c","d"]

list1是一个有5个整型变量的列表,list2是一个有4个字符串变量的列表。

另一种创建方式

python生成组合特征 python生成组合列表_数据结构


注:直接调用不带参的list()函数时,将返回一个空列表,即:[ ]。

创建列表时,列表中的元素的数据类型可以各不相同,如int,string类型,甚至可以是一个列表类型,如在下列中[10,20]为一个list类型,它作为list3的一个元素存在于list3中。

python生成组合特征 python生成组合列表_python_02


读取元素

列表的下标是从0开始

python生成组合特征 python生成组合列表_python生成组合特征_03


索引可正可负,负数是从-1开始,即从最后一个元素开始。

下标超出list大小,会报错。


遍历列表

遍历一个列表元素的最常见方式是使用for循环,常见的有以下两种方式。

  1. 用len()函数计算出列表长度再进行遍历操作
  2. python生成组合特征 python生成组合列表_字符串_04

  3. 直接遍历
  4. python生成组合特征 python生成组合列表_列表_05

修改元素

列表是可变的

  1. 指定下标的值对元素进行修改
  2. python生成组合特征 python生成组合列表_列表_06

  3. 使用“+”将一个新列表附加在原列表尾部
  4. python生成组合特征 python生成组合列表_数据结构_07

  5. 在列表中追加元素
  1. 使用append()方法向列表的尾部添加一个新元素
  2. python生成组合特征 python生成组合列表_数据结构_08

  3. 使用extend()方法将一个列表添加在原列表的尾部。
  4. python生成组合特征 python生成组合列表_列表_09

  1. 使用insert()方法将一个元素插入到列表的指定位置
  2. python生成组合特征 python生成组合列表_数据结构_10


检索元素

  1. 使用count()方法计算列表中某个元素出现的次数
  2. python生成组合特征 python生成组合列表_列表_11

  3. 使用in运算符检查某个元素是否在列表中
  4. python生成组合特征 python生成组合列表_字符串_12

  5. 使用index()方法返回某个元素在列表中的准确位置。
  6. python生成组合特征 python生成组合列表_python_13


  7. python生成组合特征 python生成组合列表_python_14

删除元素

  1. 使用del语句删除某个特定位置的元素
  2. python生成组合特征 python生成组合列表_列表_15

  3. remove()删除某个特定值的元素
  4. python生成组合特征 python生成组合列表_字符串_16


  5. python生成组合特征 python生成组合列表_python_17

  6. pop()方法弹出(删除)指定位置的元素
  7. python生成组合特征 python生成组合列表_python生成组合特征_18

字符串列表的转化

  1. list(str) 将字符串str转化为单个字母的列表
  2. python生成组合特征 python生成组合列表_字符串_19

  3. split()方法将字符串拆成单词
  4. python生成组合特征 python生成组合列表_字符串_20

  5. join()将字符串列表合成为一个字符串,是split的逆操作。join是字符串的方法,所以必须在分隔符上调用它,并传入列表作为实参。
  6. python生成组合特征 python生成组合列表_列表_21

其它常用函数

  1. len()返回列表中的元素个数
  2. python生成组合特征 python生成组合列表_python_22

  3. max()和min()求列表最大或最小的元素
  4. python生成组合特征 python生成组合列表_字符串_23

  5. sorted()对列表进行排序
  6. python生成组合特征 python生成组合列表_数据结构_24

  7. reversed()对列表进行逆序返回迭代器
  8. python生成组合特征 python生成组合列表_python_25

  9. sum()对数值型列表的元素进行求和运算
  10. python生成组合特征 python生成组合列表_字符串_26

  11. copy()使用等号并不能复制出一个新的列表,需要用列表自带的copy函数。
  12. python生成组合特征 python生成组合列表_列表_27

  13. copy方法是浅复制,对于列表里有列表,不会复制里面的列表,还是其引用,可以用copy模块里的deepcopy()进行深复制
  14. python生成组合特征 python生成组合列表_python生成组合特征_28


元组

元组(tuple)是值的一个序列。其中的值可以是任何类型,并且按照整数下标索引,与列表类似。但元组中的元素不能修改,列表中的元素可以修改。

不可变的tuple,使代码更安全,如果能用tuple替代list就尽量用tuple。当后续介绍字典类型时,会发现字典的键必须是不可变的,因此元组可以用作字典的键,但列表不能。


创建元组

  1. 直接用,隔开的一列值,使用=赋值给变量,虽然不是必须,但元组常常用小括号括起来。
  2. python生成组合特征 python生成组合列表_数据结构_29

  3. 使用内置函数tuple
  4. python生成组合特征 python生成组合列表_字符串_30

如何定义一个只有一个元素的tuple

python生成组合特征 python生成组合列表_字符串_31

访问元组

元组可以使用下标索引来访问元组的值。

python生成组合特征 python生成组合列表_列表_32

修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合。

python生成组合特征 python生成组合列表_python_33

删除元组

元组的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。

python生成组合特征 python生成组合列表_列表_34

常见操作

元组的常用函数与列表类似,除了那些违反不变性的函数。

python生成组合特征 python生成组合列表_python_35


然而,当元组中存在列表元素项时,就可以使用上述如append等方法修改list中的元素,达到间接修改元组元素的目的。

python生成组合特征 python生成组合列表_python_36

常见使用场景

可变长参数是元组的最常用场景:

python生成组合特征 python生成组合列表_字符串_37


在这里,*号可称为收集操作符,也就是把传入的参数收集到一个元组中。


字典

字典是一种集合,它不是序列。字典可以看成元素对构成的列表,其中一个元素是键,另一个元素是值。


创建字典

与列表、元组不同,字典是以{}定义的,而且字典中每个元素包含两个部分,即键和值。

下面给出一些实例,展示了各种语法,这些语法产生的是相同的字典。

python生成组合特征 python生成组合列表_列表_38

字典查找

字典定义好后,可以通过键来查找值。

python生成组合特征 python生成组合列表_数据结构_39


没法通过索引值来找键,只能暴力去找

python生成组合特征 python生成组合列表_python生成组合特征_40


遍历字典

用循环语句来遍历字典中的每个元素的键和值。

python生成组合特征 python生成组合列表_列表_41


添加修改

添加和修改方法相同,都是使用 “字典变量名[键名]=键值” 的形式,如果原来已经存在是修改,不存在就是添加。

python生成组合特征 python生成组合列表_python生成组合特征_42


字典检索

可以使用in运算符来测试某个特定的键是否在字典中。表达式k in d (d为字典) 查找的是键,而不是值。

python生成组合特征 python生成组合列表_python生成组合特征_43


查看一个值是不是出现在字典中,可以使用方法values,它返回该字典的所有值的一个集合,然和检索当前值是否在集合中即可。

python生成组合特征 python生成组合列表_数据结构_44

删除元素

  1. 使用del语句删除指定键的元素或整个字典。
  2. python生成组合特征 python生成组合列表_python_45

  3. 使用clear()方法清空字典
  4. python生成组合特征 python生成组合列表_python_46

  5. pop()删除并返回指定键的元素,popitem()弹出随机的项。
  6. python生成组合特征 python生成组合列表_列表_47


常用函数

  1. keys():将字典中的键以集合形式返回
  2. copy():返回一个具有相同键-值对的新字典,和列表一样是浅复制
  3. fromkeys():使用给定的键创建新的字典,每个默认对应的值为None
  4. python生成组合特征 python生成组合列表_python生成组合特征_48

  5. get():get方法访问字典,即使没有该键也不会报错。
  6. python生成组合特征 python生成组合列表_python_49

  7. setdefault():如果键不存在,则创建键值对。
  8. python生成组合特征 python生成组合列表_字符串_50

  9. update():利用一个字典项更新另一个字典,若有相同的键存在,则会进行覆盖,类似于把两个字典合并到一起。
  10. python生成组合特征 python生成组合列表_python生成组合特征_51

集合

集合 (set) 是0个或多个对象引用的无序组合,这些对象所引用的对象都是可哈希运算的。集合是可变的,因此可以很容易地添加或移除数据项,但由于其中的项是无序的,因此,没有索引位置的概念。
在集合中,任何元素都没有重复,这是集合的一个非常重要的特点。
set和dict类似,是一组key的集合,但不存储value,且在set中没有重复的key。


创建集合

有快捷方式和构造函数两种

python生成组合特征 python生成组合列表_python生成组合特征_52


添加元素

通过add(key)方法添加元素到set中,可以重复添加,但不会有效果。

python生成组合特征 python生成组合列表_python生成组合特征_53

删除元素

  1. remove(key) 删除元素,元素不在会报错
  2. discard(key) 删除元素,元素不在不会报错
  3. clear()删除集合的所有元素(使它成为空集)

集合运算符

  1. len():确定集合中的元素数量。
  2. in:判断元素是否在集合中
  3. for:遍历集合中的元素

数学集合运算

  1. 交集:&或者 intersection
  2. python生成组合特征 python生成组合列表_数据结构_54

  3. 并集:| 或 union
  4. python生成组合特征 python生成组合列表_python生成组合特征_55

  5. 差集:- 或 difference
  6. python生成组合特征 python生成组合列表_字符串_56

  7. 对称差(也称补集):^ 或 symmetric_difference
  8. python生成组合特征 python生成组合列表_数据结构_57

  9. 子集和超集:issubset 和 issuperset
  10. python生成组合特征 python生成组合列表_字符串_58

  11. 常用函数
  12. python生成组合特征 python生成组合列表_列表_59


组合数据类型的高级特性

切片

L[a:b]表示从索引a开始取,直到索引b为止,但不包括索引b。

支持倒数切片。L[-1]取倒数第一个元素

python生成组合特征 python生成组合列表_数据结构_60


迭代

列表这种数据类型有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有没有下标,都可以迭代。

  1. 字典的迭代
  2. python生成组合特征 python生成组合列表_字符串_61

  3. 集合的迭代
  4. python生成组合特征 python生成组合列表_python生成组合特征_62

  5. 字符串的迭代
  6. python生成组合特征 python生成组合列表_数据结构_63

  7. Iterable类型——可通过collections.abc模块的Iterable类型判断该对象是否是一个可迭代的对象。
  8. python生成组合特征 python生成组合列表_python_64

  9. Python内置的enumerate函数可以把一个list变成 ‘索引-元素’ 对,这样就可以在for循环中同时迭代索引和元素本身。
  10. python生成组合特征 python生成组合列表_字符串_65


列表生成式

  1. 一层循环
  2. python生成组合特征 python生成组合列表_列表_66

  3. 二层循环
  4. python生成组合特征 python生成组合列表_python_67

  5. 集合(set)和 字典(dict)也有生成式方式
  6. python生成组合特征 python生成组合列表_python_68


生成器

通过列表生成式,可以直接创建一个列表,但由于计算机内存有限,对于一个特别大的列表是无法直接创建的。在Python中,有生成器(generator)可以一边循环一边计算,从而节省大量空间。

  1. 简单生成器:将列表生成式的[]改为(),就创建一个generator。
  2. python生成组合特征 python生成组合列表_列表_69

  3. 带yield语句的生成器:如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。
  4. python生成组合特征 python生成组合列表_列表_70

  5. 实质上,每次循环,函数会执行到yield,然后返回,等下次循环在继续往下执行到下一个yield。下面的栗子可以很好地看出来。
  6. python生成组合特征 python生成组合列表_列表_71


迭代器

Python的for循环本质上就是通过不断调用next()函数实现的。

例如:

python生成组合特征 python生成组合列表_python_72


实际上完全等价于

python生成组合特征 python生成组合列表_数据结构_73


python生成组合特征 python生成组合列表_列表_74


python生成组合特征 python生成组合列表_python_75