韩顺平 | 零基础快速学Python(8) 数据容器

数据容器

容器collections:一种数据类型。可以存放多个数据/元素,可以是任意类型。

python数据类型

  • 可变数据类型:内存地址不变,该数据类型的变量的值可以发生变化,包括数值类型整数int和浮点数float、布尔bool、字符串string、元组tuple;
  • 不可变数据类型:数据类型的变量的值发生了变化,该数据类型的内存地址也会改变,包括列表list、集合set、字典dict

数据容器对比小姐

在这里插入图片描述
支持索引,遍历支持while和for;不支持索引,遍历仅支持for。

相关内置函数函数:
round(number, ndigits=None) 返回number舍入到小数点后ndigits位精度的值,若被省略或为None,则返回最接近如输入值的整数。
len(s) 返回对象的长度/元素个数,实参可以是序列(如string、bytes、tuple、list、range…)或集合(如dictionary、set、frozen set)

列表list

介绍:列表可以存放多个不同数据类型,列表就是一列数据(多个数据),列表也是一种数据类类型。
定义:使用逗号分隔不同数据,用方括号括起。

  • 数据编号/下标/索引idexes从0开始计数,也可以从尾部-1、-2计数,列表索引只能在有效范围类使用(否则索引越界)。(列表内数据实际是指向数据的地址)
  • 列表的遍历/迭代:将列表中每个元素依次取出,进行处理的操作。
  • 空列表可以通过[]list()定义
  • 列表的元素可以有多个,而且数据类型没有限制,可以不同,允许有重复元素,且是有序的。
  • 修改元素list_name[index]=new_value、添加元素list_name.append(new_value)、删除元素del list_name[index]
  • 列表是可变序列,列表元素可以修改,修改后列表变量指向地址不变id(list_name),该列表内对应元素若为整数或字符串则地址id(list_name[index])变化
list1 = [1, 2.1, "python"]
list2 = list1
list2[0] = 500
print(list2) # [500, 2.1 "python"]
print(list1) # [500, 2.1 "python"]

即列表在函数传参时的特点:函数内若修改列表元素,会修改函数外列表
在这里插入图片描述

列表常用操作
# 列表常用操作
len(list) # 列表元素个数
max(list) # 返回列表元素最大值
min(list) # 返回列表元素最小值
list(seq) # 将元组转换为列表

在这里插入图片描述

列表生成式
[列表元素/自定义变量的表达式 for 自定义变量 in 可迭代对象]
[ele + ele for ele in "abc"] # ["aa", "bb", "cc"]

元组tuple

元组可以存放多个不同类型数据,是不可变序列,创建后就不能改变了,元组也是一种数据类型。
定义:使用逗号分隔不同数据,用圆括号括起。

  • 可以通过索引/下标获取元素,从0开始计数,或从尾部-1、-2计数,在有效范围内使用(超出越界)
  • 遍历/迭代:将元组中每个元素依次取出,进行处理的操作。
  • 空元组使用()tuple()定义,只有一个元素的的元组需要带上逗号,否则是整型
  • 元组元素可以有多个,数据类型没有限制,允许有重复元素,有序
  • 元组是不可变序列,不能修改元素,但如果有列表元素,该列表支持修改、增加和删除列表元素,该列表id地址不变
元组常用操作

在这里插入图片描述

字符串str

介绍:Python中处理文本数据是使用str对象,也称字符串,是由Unicode码构成的不可变序列。
ord()返回字符的Unicode字符编码。Unicode可以表示65536个字符,是国际组织指定的可以容纳世界上所有文字和符号的字符编码方案。
定义:单引号、双引号、三重单双引号(多行,包含所有空格字符)
字符串是字符的容器,一个字符可以存放多个字符(实际容器存放的是每个字符的地址)

  • Python中字符串长度没有固定限制,取决于内存大小
  • 遍历/迭代:将数据容器中每个元素依次取出,进行处理的操作。while c < len(c): for e in c:
  • 可以通过索引/下标获取元素,从0开始计数,或从尾部-1、-2计数,在有效范围内使用(超出越界)
字符串常用操作

在这里插入图片描述

str_name = "jack tom mary tom"
str_names_split = str_name.split(" ") #['jack', 'tom', 'mary', 'tom']
print("123t132om321".strip("132")) # t132om
字符串比较

运算符:> , >= , < , <=, == , !=
比较规则:从第一个字符依次比较,直到不相等
比较原理,比较ordinal value(原始值/码值),调用内置函数ord()可以得到指定字符对应的码值,chr()可以得到码值对应的字符

切片

切片:从一个序列中,取出一个子序列。
序列:内容连续、有序,可以使用索引的一类数据容器。

序列[起始索引:结束索引:步长] # 前闭后开
  • 保留冒号间隔,省略起始索引默认从0开始,省略结束索引默认截取到结尾(包含最后一个元素),省略步长默认为1
  • 步长为负数代表反向取,起始索引和结束索引也使用反向标记
  • 切片操作不影响原来的序列,而是形成了一个新序列

集合set

介绍:不重复元素组成的无序容器。
定义:使用逗号分隔不同数据,用{}括号括起。

  • 集合支持合集、交集、差集等数学运算。
  • 无序:定义的顺序和取出的顺序不能保证一致。单集合底层会按照自己的一套算法存储和取数据,所以每次取出顺序不变
  • 集合不支持索引
  • 遍历/迭代:由于不支持索引,所以不能用while,只能用for
  • 创建空集合只能使用set()
集合常见操作

在这里插入图片描述在这里插入图片描述

集合生成式
{集合元素的表达式 for 自定义变量 in 可迭代对象}

字典dict

介绍:“Key键/关键字-Value值”映射类型,也称联合数组/联合内存
定义:{key1:value1, key2:value2,...} 元素是键值对

  • 创建空字典{}dict()
  • 字典是以进行索引的,取值dict_a[key],键可以是任何不可变类型,通常是字符串和数字,值可以是任意数据类型。
  • 字典不支持索引,会报KeyError
  • 遍历/迭代:只支持for,依次取key,再据key取value;依次直接取value,依次直接取key和value for k, v in dict_a.items():
字典常用操作

在这里插入图片描述

字典生成式

zip()可以将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,返回这些元组组成的列表。

{字典key的表达式: 字典value的表达式 for 表示key的变量, 表示value的变量 in zip(key可迭代对象, value可迭代对象)}

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值