Python从入门到实战(三)——组合数据类型

Python从入门到实战(一)——Python基础
Python从入门到实战(二)——程序流程控制
Python从入门到实战(三)——组合数据类型
Python从入门到实战(四)——函数
Python从入门到实战(五)——模块和包
Python从入门到实战(六)——文件
Python从入门到实战(七)——面向对象
Python从入门到实战(八)——异常
Python从入门到实战(九)——多线程
Python从入门到实战(十)——爬虫

列表

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


创建列表

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

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

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

另一种创建方式
在这里插入图片描述
注:直接调用不带参的list()函数时,将返回一个空列表,即:[ ]。
创建列表时,列表中的元素的数据类型可以各不相同,如int,string类型,甚至可以是一个列表类型,如在下列中[10,20]为一个list类型,它作为list3的一个元素存在于list3中。
在这里插入图片描述


读取元素

列表的下标是从0开始
在这里插入图片描述
索引可正可负,负数是从-1开始,即从最后一个元素开始。
下标超出list大小,会报错。


遍历列表

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

  1. 用len()函数计算出列表长度再进行遍历操作
    在这里插入图片描述

  2. 直接遍历
    在这里插入图片描述

修改元素

列表是可变的

  1. 指定下标的值对元素进行修改
    在这里插入图片描述

  2. 使用“+”将一个新列表附加在原列表尾部
    在这里插入图片描述

  3. 在列表中追加元素

    1. 使用append()方法向列表的尾部添加一个新元素
      在这里插入图片描述

    2. 使用extend()方法将一个列表添加在原列表的尾部。
      在这里插入图片描述

  4. 使用insert()方法将一个元素插入到列表的指定位置
    在这里插入图片描述


检索元素

  1. 使用count()方法计算列表中某个元素出现的次数
    在这里插入图片描述

  2. 使用in运算符检查某个元素是否在列表中
    在这里插入图片描述

  3. 使用index()方法返回某个元素在列表中的准确位置。
    在这里插入图片描述
    在这里插入图片描述

删除元素

  1. 使用del语句删除某个特定位置的元素
    在这里插入图片描述

  2. remove()删除某个特定值的元素
    在这里插入图片描述
    在这里插入图片描述

  3. pop()方法弹出(删除)指定位置的元素
    在这里插入图片描述

字符串列表的转化

  1. list(str) 将字符串str转化为单个字母的列表
    在这里插入图片描述

  2. split()方法将字符串拆成单词
    在这里插入图片描述

  3. join()将字符串列表合成为一个字符串,是split的逆操作。join是字符串的方法,所以必须在分隔符上调用它,并传入列表作为实参。
    在这里插入图片描述

其它常用函数

  1. len()返回列表中的元素个数
    在这里插入图片描述

  2. max()和min()求列表最大或最小的元素
    在这里插入图片描述

  3. sorted()对列表进行排序
    在这里插入图片描述

  4. reversed()对列表进行逆序返回迭代器
    在这里插入图片描述

  5. sum()对数值型列表的元素进行求和运算
    在这里插入图片描述

  6. copy()使用等号并不能复制出一个新的列表,需要用列表自带的copy函数。
    在这里插入图片描述
    copy方法是浅复制,对于列表里有列表,不会复制里面的列表,还是其引用,可以用copy模块里的deepcopy()进行深复制
    在这里插入图片描述


元组

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

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


创建元组

  1. 直接用,隔开的一列值,使用=赋值给变量,虽然不是必须,但元组常常用小括号括起来。
    在这里插入图片描述

  2. 使用内置函数tuple
    在这里插入图片描述

如何定义一个只有一个元素的tuple
在这里插入图片描述

访问元组

元组可以使用下标索引来访问元组的值。
在这里插入图片描述

修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合。
在这里插入图片描述

删除元组

元组的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。
在这里插入图片描述

常见操作

元组的常用函数与列表类似,除了那些违反不变性的函数。
在这里插入图片描述
然而,当元组中存在列表元素项时,就可以使用上述如append等方法修改list中的元素,达到间接修改元组元素的目的。
在这里插入图片描述

常见使用场景

可变长参数是元组的最常用场景:
在这里插入图片描述
在这里,*号可称为收集操作符,也就是把传入的参数收集到一个元组中。


字典

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


创建字典

与列表、元组不同,字典是以{}定义的,而且字典中每个元素包含两个部分,即键和值。
下面给出一些实例,展示了各种语法,这些语法产生的是相同的字典。
在这里插入图片描述

字典查找

字典定义好后,可以通过键来查找值。
在这里插入图片描述
没法通过索引值来找键,只能暴力去找
在这里插入图片描述


遍历字典

用循环语句来遍历字典中的每个元素的键和值。
在这里插入图片描述


添加修改

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


字典检索

可以使用in运算符来测试某个特定的键是否在字典中。表达式k in d (d为字典) 查找的是键,而不是值。
在这里插入图片描述
查看一个值是不是出现在字典中,可以使用方法values,它返回该字典的所有值的一个集合,然和检索当前值是否在集合中即可。
在这里插入图片描述

删除元素

  1. 使用del语句删除指定键的元素或整个字典。
    在这里插入图片描述

  2. 使用clear()方法清空字典
    在这里插入图片描述

  3. pop()删除并返回指定键的元素,popitem()弹出随机的项。
    在这里插入图片描述


常用函数

  1. keys():将字典中的键以集合形式返回

  2. copy():返回一个具有相同键-值对的新字典,和列表一样是浅复制

  3. fromkeys():使用给定的键创建新的字典,每个默认对应的值为None
    在这里插入图片描述

  4. get():get方法访问字典,即使没有该键也不会报错。
    在这里插入图片描述

  5. setdefault():如果键不存在,则创建键值对。
    在这里插入图片描述

  6. update():利用一个字典项更新另一个字典,若有相同的键存在,则会进行覆盖,类似于把两个字典合并到一起。
    在这里插入图片描述

集合

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


创建集合

有快捷方式和构造函数两种
在这里插入图片描述


添加元素

通过add(key)方法添加元素到set中,可以重复添加,但不会有效果。
在这里插入图片描述

删除元素

  1. remove(key) 删除元素,元素不在会报错
  2. discard(key) 删除元素,元素不在不会报错
  3. clear()删除集合的所有元素(使它成为空集)
    在这里插入图片描述

集合运算符

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

数学集合运算

  1. 交集:&或者 intersection
    在这里插入图片描述

  2. 并集:| 或 union
    在这里插入图片描述

  3. 差集:- 或 difference
    在这里插入图片描述

  4. 对称差(也称补集):^ 或 symmetric_difference
    在这里插入图片描述

  5. 子集和超集:issubset 和 issuperset
    在这里插入图片描述

  6. 常用函数
    在这里插入图片描述


组合数据类型的高级特性

切片

L[a:b]表示从索引a开始取,直到索引b为止,但不包括索引b。
支持倒数切片。L[-1]取倒数第一个元素
在这里插入图片描述


迭代

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

  1. 字典的迭代
    在这里插入图片描述

  2. 集合的迭代
    在这里插入图片描述

  3. 字符串的迭代
    在这里插入图片描述

  4. Iterable类型——可通过collections.abc模块的Iterable类型判断该对象是否是一个可迭代的对象。
    在这里插入图片描述

  5. Python内置的enumerate函数可以把一个list变成 ‘索引-元素’ 对,这样就可以在for循环中同时迭代索引和元素本身。
    在这里插入图片描述


列表生成式

  1. 一层循环
    在这里插入图片描述

  2. 二层循环
    在这里插入图片描述
    集合(set)和 字典(dict)也有生成式方式
    在这里插入图片描述


生成器

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

  1. 简单生成器:将列表生成式的[]改为(),就创建一个generator。
    在这里插入图片描述

  2. 带yield语句的生成器:如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。
    在这里插入图片描述
    实质上,每次循环,函数会执行到yield,然后返回,等下次循环在继续往下执行到下一个yield。下面的栗子可以很好地看出来。
    在这里插入图片描述


迭代器

Python的for循环本质上就是通过不断调用next()函数实现的。
例如:
在这里插入图片描述
实际上完全等价于
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值