天天看点

Python基础学习之7.Python元组、字典和集合1.元组2.字典3.集合

文章目录

  • 1.元组
    • 1.1 元组的拆包
    • 1.2 字符串拆包
    • 1.3列表拆包
  • 2.字典
    • 2.1 字典简介
    • 2.2 语法
    • 2.3 字典的使⽤
    • 2.4 copy()方法
    • 2.5 遍历字典
  • 3.集合
    • 3.1集合简介
    • 3.2 集合的运算

1.元组

元组简介

  • 元组表现形式tuple
  • 元组是⼀个不可变序列(⼀般当我们希望数据不改变时,我们使⽤元组,其他 情况下基本都⽤列表
  • 使⽤()创建元素
  • 元组不是空元组⾄少有⼀个 逗号(,) 当元组不是空元组时括号可以省略
  • 元组解包指将元组当中的每⼀个元素都赋值给⼀个变量
tuple()
my_tuple = (1, 2, 3, 4)
print(my_tuple, type(my_tuple))
print(my_tuple[2])#打印元组中下标为2的值
           

如果元组不是空元组,那么它至少得有一个逗号

tuple1 = (10,)
print(tuple1, type(tuple1))
           

1.1 元组的拆包

my_tuple = (1, 2, 3, 4, 5)
a, *b, c, d = my_tuple
print('a', a)
print('b', b)
print('c', c)
print('d', d)
---------------
a 1
b [2, 3]
c 4
d 5
           

在对一个元组拆包的时候,变量的数量和元组中元素的数量要把持一致,

如果变量和元素不一致,就可以在变量前面加上一个*,这样会获取元组中剩余的元素,以列表的形式返回.

1.2 字符串拆包

s = 'abcdef'
a, b, *c = s
print(a, b, c)
---------------
a b ['c', 'd', 'e', 'f']
           

1.3列表拆包

list1 = [1, 2, 3, 4]
a, b, *c = list1
print(a, b, c)
           

2.字典

2.1 字典简介

字典的基本介绍

  • 字典属于⼀种新的数据结构称为映射(mapping) 字典的作⽤和列表类似,都是⽤来存储对象的容器
  • 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
  • 在字典中每⼀个元素都有唯⼀的名字,通过这个唯⼀的名字可以找到指定的元素
  • 元素这个唯⼀的名字我们称之为key 通过key可以快速查询value 也可以称之为值
  • 字典我们也称之为键值对(key-value)结构 每个字典中都可以有多个键值对,⽽每⼀个键值对我们称其为⼀项(item)

2.2 语法

  • {key:value} 字典的值可以是任意对象
  • 字典的键可以是任意的不可变对象(int str bool tuple…) 字典的键是不能重复的,如果出现重复的后⾯的会替换前⾯的
{key:value}  #可以通过key查询到value这个值, 所以我们也称之为键值对, 每一个键值对我们称呼为一项(item)
{}  dict 字典
d = {}
print(d, type(d))
           

2.3 字典的使⽤

  • dict()函数来创建字典
  • get(key[,default]) 根据键来获取字典的值。第⼆个参数可以指定⼀个默认值,当获取不到值的时候会返回默认值80
  • update() 将其他字典的key-value添加到当前的字典当中 del 删除字典中的key-value
  • popitem() 删除字典最后的⼀个key-value 这个⽅法是有返回值的。删除之后它会将删除的key-value作为返回值返回
  • pop(key[,default]) 根据key删除⾃定中的value。第⼆个参数可以指定⼀个默认值,当获取不到值的时候会返回默认值
#当字典中的key有重复的时候,后面的数据会替换前面的数据
d = {
    'name': '刘亦菲',
    'age': 18,
    'gender': '女神',
    'name': '周慧敏'
}
print(d['name'])
d1 = dict(name='刘亦菲', age=18)
print(d1)
----------------------------------
周慧敏
{'name': '刘亦菲', 'age': 18}
           

2.4 copy()方法

  • copy() ⽅法⽤来对字典进⾏浅复制(浅方法只复制第一层)
  • 注意:潜复制只会复制字典本身,如果字典中还有个字典是不会进⾏复制的。

2.5 遍历字典

我们主要可以通过3种⽅式对字典进⾏遍历

  • keys() 该⽅法返回字典所有的key
  • values() 该⽅法返回⼀个序列 序列中保存有字典的值
  • items() 该⽅法会返回字典中所有的项 它返回⼀个序列,序列中包含有双值⼦序列(双值分别是字典中的key和value)
双值子序列
双值序列  [1, 2], (1, 2),  'ab'
子序列   ['a']  数据类型嵌套
双值子序列  [(1, 2), (3, 4)]
list1 = [(1, 2), (3, 4)]
d = dict(list1)
print(d)
           
d = {
    'name': '刘亦菲',
    'age': 18,
    'gender': '女神'
}

print(len(d))
print('刘亦菲' in d)
print(d['age'])

# get(key, default)
# 如果是没有这个key,返回None,不会报错
# 也可以指定一个默认值,来作为第二个参数,这样获取不到key值的是偶可以返回默认值
print(d.get('xec'), '你是谁')
           
d = {
    'name': '刘亦菲',
    'age': 18,
    'gender': '女神'
}
# 修改字典
# d[key] = value
d['age'] = 16
print(d)
# 没有这个key-value就是添加
d['height'] = 174
print(d)
-----------------------------------
{'name': '刘亦菲', 'age': 16, 'gender': '女神'}
{'name': '刘亦菲', 'age': 16, 'gender': '女神', 'height': 174}
           
d = {
    'name': '刘亦菲',
    'age': 18,
    'gender': '女神'
}
# 添加 setdefault(key, default)
# 如果这个key已经存在于字典中,则返回value值,不会对字典造成影响
# 如果不存在,则向字典中添加key-value
res = d.setdefault('name', '周慧敏')
res = d.setdefault('height', 170)
print(res)
print(d)
-------------------------------------
170
{'name': '刘亦菲', 'age': 18, 'gender': '女神', 'height': 170}
           
d = {
    'name': '刘亦菲',
    'age': 18,
    'gender': '女神'
}
# 添加 update()  将其他的字典当中的key-value添加到当前的字典中
d1 = {1: '1', 2: '2'}
d.update(d1)
print(d)
           
d = {
    'name': '刘亦菲',
    'age': 18,
    'gender': '女神'
}
#删除
#del  删除字典中的key-value
del d['age']
print(d)

pop(key, default)
res = d.pop('height')
print(res)
print(d)

popitem() #随机删除一个键值对,一般都是删除最后一个
#他会将删除后的键值对作为返回值返回
res = d.popitem()
print(res)
print(d)

clear()  #清空字典
           

3.集合

3.1集合简介

  • 集合表现形式set 集合和列表⾮常相似
  • 不同点
    • 集合只能存储不可变对象
    • 集合中存储的对象是⽆序的
    • 集合不能出现重复元素
  • 使⽤{}来创建集合
  • 可以通过set()来将序列和字典转换成集合
  • len() 使⽤len()来获取集合中元素的数量
  • add()像集合中添加元素
  • update()将⼀个集合中的元素添加到另⼀个集合当中
  • pop()随机删除集合中的⼀个元素⼀般是删除最后⼀个元素 remove() 删除集合中指定的元素
  • clear() 清空集合
s = {}
print(type(s))
s = set()
print(s, type(s))
s = {6, 8}
a, b = s
print(a)
print(b)
print(s)
-------------------------------------
<class 'dict'>
set() <class 'set'>
8            #集合是无序性的
6
{8, 6}
{1}
           
  • 集合只能存储不可变对象
  • 集合中存储的对象是无序的
  • 集合不能出现重复元素 # 用集合去做去重的操作
s = {1, 2, 3, 'sdfb', (1, 2), 1, 2, 3}
print(s)

list1 = [1, 2, 3, 4, 4, 3, 2, 1]
print(list(set(list1)))

s = set()
# in  not in  len()
# add()  添加元素进集合
s.add(1)
print(s)
           
# update()  将一个集合中的元素添加到另一个集合中
s1 = {2, 3, 4, (1, 2)}
s.update(s1)
print(s)

#pop() 随机删除
s.pop()
print(s)

#remove() 指定删除元素
s.remove((1, 2))
print(s)

clear()
           

3.2 集合的运算

  • “&”交集运算
  • “|”并集运算
  • “-”差集运算
  • “^”亦或集
  • “<=”检查⼀个集合是否是另⼀个集合的⼦集
  • “<” 检查⼀个集合是否是另⼀个集合的真⼦集
  • “>=”检查⼀个集合是否是另⼀个集合的超集
  • “>”检查⼀个集合是否是另⼀个集合的真超集