元组和列表

元组和列表是序列类型的扩展类型,所以我们先了解一下序列类型的基本用法。

一、序列类型

1、序列
  • 序列是具有先后关系的一组元素
  • 序列是一堆元素向量,元素类型可以不同
  • 序列间由序号引导,通过下标访问序列的特定元素
2、序列类型的6个通用操作符

3、序列类型的6个通用函数
函数描述
len(s)返回序列s的长度
min(s)返回序列s中的最小元素
max(s)返回序列s中的最大元素
s.index(x)或s.index(x,i,j)返回序列s中从i到j位置中第一次出现元素x的位置
s.count(x)返回序列中元素x出现的次数
4、可变与不可变数据类型

判断可变与不可变类型,只需在改变值的同时,使用id()函数查看变量id值是否变化就可以知道这种数据类型是可变还是不可变

  • 不可变数据类型:数值型、字符串、布尔值、元组
  • 可变数据类型:列表,字典,集合

二、元组

1、元组
  • 元组是序列类型中比较特殊的类型
  • 创建后就不能修改
  • 元组在表达固定数据项、函数多返回值、多变量同步赋值、循环遍历等情况下十分有用
  • 在python中元组是用逗号来定义的,圆括号可要可不要
>>>s = '1','python','2'
>>>s
('1', 'pyhton', '2')
2、元组的用法
  • 元组的索引
>>>s = '1','python','2'
>>>s[1]
'python'
>>>s = '1','2','python',('pink','red','blue')
>>>s[3][1]
'red'
3、元组的应用场景

数据保护:如果不希望数据被程序所改变,转换成元组类型

>>>ls = ['pig','cat']
>>>lt = tuple(ls)
>>>lt
('pig','cat')

三、列表

1、列表
  • 列表是一种序列类型,创建后可以随意修改
  • 使用方括号[]或list()创建,元素间用逗号分隔
  • 列表中各元素类型可以不同,无长度限制
  • 方括号[]真正创建一个列表,赋值仅传递引用
2、列表类型操作函数和方法
函数或方法描述
ls[i] = x替换列表ls第i个元素为x
ls[i:j:k] = lt用列表lt替换ls切片后所对应元素子列表
del ls[i]删除列表ls中的第i个元素
del ls[i:j:k]删除列表中第i到第j以k为步长的元素
ls += lt更新列表ls,将列表lt元素增加到列表ls中
ls *= n更新列表ls,其元素重复n次
>>>ls = ['black','pink','red','1234']
>>>ls[3] = '666'
['black','pink','red','666']
>>>ls[1:2] = [1,2,3,4]
['black',1,2,3,4,'red','666']
>>>del ls[0]
[1,2,3,4,'red','666']
>>>del ls[1:3]
[1,4,'red','666']
>>>ls *= 2
[1,4,'red','666',1,4,'red','666']
函数或方法描述
ls.append(x)在列表ls最后增加一个元素x
ls.clear()删除列表ls中所以元素
ls.copy()生成一个新列表,赋值ls中的所有元素
ls.insert(i,x)在列表ls中第i位置插入元素x
ls.pop(i)将列表ls中第i位置元素取出并删除元素
ls.remove(x)将列表ls中出现的第一个元素x删除
ls.reverse()将列表ls中的元素反转
ls.sort()对列表元素进行排序

注意:除ls.copy()以外,列表方法均不会改变列表的id,也不会新建列表,ls.copy()除外

>>>ls = ['apple','pear','banana']
>>>ls.append('grasp')
['apple','pear','banana','grasp']
>>>ls.pop(2)
'banana'
>>>ls.insert(2,'bear')
['apple','pear','bear','grasp']
>>>ls.reverse()
['grasp','bear','pear','apple']
3、列表推导式

[ 新元素表达式 for 临时变量 in 可迭代对象 if 条件表达式]

>>>multiples = [i for i in range(30) if i % 3 == 0] 
>>>print(multiples)
[0,3,6,9,12,15,18,21,24,27,30]

四、集合

1、集合
  • 集合类型与数学中的集合概念一致
  • 集合元素之间无序,每个元素唯一,不存在相同元素
  • 集合元素不可更改,不能是可变数据类型
  • 集合用大括号{}表示,元素间用逗号分隔
  • 建立集合类型用{}或set()
  • 建立空集合类型,必须使用set()
>>>s = {1,3,5,3,1}
>>>s
{1,3,5}
>>>s = set('python')
{'p','y','t','h','o',n'}
2、集合操作符
  • 6个操作符
操作符描述
s | t返回一个新集合,包括在集合s和t中的所有元素
s - t返回一个新集合,包括在集合s但不在t中的元素
s & t返回一个新集合,包括同时在集合s和t中的元素
s ^ t返回一个新集合,包括集合s和t中的非相同元素
s <= t或s < t返回True/False,判断s和t的子集关系
s >= t或s > t返回True/False,判断s和t的包含关系
  • 4个增强操作符
操作符描述
s |= t更新集合s,包括在集合s和t中的所有元素
s -= t更新集合s,包括集合s但不在集合t中的元素
s &= t更新集合s,包括同时在集合s和t中的元素
s ^= t更新集合s,包括在集合s和t中的非相同元素
3、集合的比较运算
运算符描述
s1 == s2s1和s2元素相同
s1 != s2s1和s2元素不相同
s1 < s2s1是s2的纯子集
s1 <= s2s1是s2的子集
s1 > s2s1是s2的纯超集
s1 >= s2s1是s2的超集
>>>s1 = {1,2,3}
>>>s2 = {2,3,4}
>>>s3 = {1,2}
>>>s4 = {1,2,3,4,5}
>>>s1 == s2
True
>>>s2 < s4
True
>>>s1 < s3
False
4、集合处理方法
方法描述
s.copy()返回集合s的一个拷贝
len(s)返回集合元素的个数
x in s判断s中元素x,x在集合s中,返回True,否则返回False
x not in s判断s中元素x,x不在集合s中,返回False,否则返回True
set(x)将其他类型的变量x转变为集合类型
s.add(x)如果元素x不在集合s中,将x加入s
s.clear()清除集合中所有元素
s.pop()随机返回集合中的一个元素,如果s为空,产生KeyError异常
s.discard(x)如果x在集合s中,移除改元素,如果x不在,不报错
s.remove(x)如果x在集合s中,移除改元素,如果x不在,产生KeyError异常
s.iddisjoint(t)如果集合s和t没有相同元素,则返回True
>>>s = {'e','r',1,2}
>>>1 in s
True
>>>len(s)
4
5、集合类型应用场景
  • 数据去重:集合类型所有元素无重复
>>>s = ['e','r','e','r',1,2]
>>>t = set(s)
>{'e','r'1,2}

五、字典

1、映射

在字典之前先理解映射

  • 映射是一种键(索引)和值(数据)的对应

    城市:武汉
    地址:中关村
    这里‘城市’和‘地址’就是键,‘武汉’和‘中关村’就只值

2、字典
  • 字典类型是“映射”的体现
  • 键值对:键是数据索引的扩展
  • 字典是键值对的集合,键值对之间无序
  • 在字典中键不能重复,根据键能查询到值
  • 字典的值只能使用不可变类型,但字典的值可以使用可变或不可变类型
  • 创建一个空字典可以能用大括号直接创建,也可以使用dict()创建
  • 采用大括号{}和dict()创建,键值对用冒号:表示
    {<键1>:<值1>,<键2>:<值2>…<键n>:<值n>}
>>>s = {'中国':‘北京’,'美国':'华盛顿','法国':'巴黎'}
>>>{'中国':‘北京’,'法国':'巴黎','美国':'华盛顿'}

注意:字典打印出来的顺序与创建之初的顺序不同,这不是错误,字典是集合类型的延续,各个元素并没有顺序之分

3、字典的用法
  • 在字典变量中,通过键获得值(最主要的用法)
    <值> = <字典变量>[<键>]
    <字典变量>[<键>] = <值>
    ([ ]用来向字典变量中索引或增加元素)
4、字典类型操作函数及方法

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

>>>s = {'A':'a','B':'b','C':'c'}
>>>s.keys()
dict_keys(['A','B','C'])
>>>s.item()
dict_item([('A':'a'),('B':'b'),('C':'c')])
>>>s.get('A','D')
'A'
>>>s.get('F','h')
'h'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值