集合、元组、字典的操作合集

集合、元组、字典的操作合集

代码换行
  1. 添加 \ 可以起到换行作用
  2. 使用小括号
集合(set)
集合的定义:

把一定范围的,确定的,可以区别的事物当做一个整体来对待,这个整体就是集合。

集合的性质:
  1. 无序性:集合中所有的元素的下标都是相等的。
  2. 互异性:一个集合中,任意两个元素都不能相等,每个元素只在一个集合中出现一次。
  3. 确定性:给定一个集合,任给一个元素属不属于这个集合是确定的。
  4. 集合是可变序列有增删等操作。
  5. 集合的标识{ }
集合的创建:
# 空集合
set2 = set()
print(type(set2), set2)
# 结果:
# <class 'set'> set()

# 集合的构造器语法
str1 = 'hello'
set3 = set(str1)
print(set3)
list1 = [1, 2, 3, 2, 1]
set4 = set(list1)
print(set4)

# 结果:
# {'o', 'e', 'l', 'h'}  # 集合的无序性
# {1, 2, 3}   # 集合的互异性
集合的遍历(循环)
for i in set4:
    print(i, end='')
# 结果:
# 1 2 3 
集合的运算
# 成员运算 in、not in
set5 = {'王者荣耀', '和平精英', 'LOL'}
print('王者荣耀' in set5)
# 结果:
# True
集合的交、并、差、对称差
set_1 = {1, 2, 3, 4, 6, 8}
set_2 = {2, 4, 6, 8}
# 交集:&
print(set_1 & set_2)
# {8, 2, 4, 6}

# 并集:|
print(set_1 | set_2)
# {1, 2, 3, 4, 6, 8}

# 差集:-
print(set_1 - set_2)
print(set_2 - set_1)
#{1, 3}
# set()

# 对称差:^
print(set_1 ^ set_2)
#{1, 3}

集合只能存放不可变数据类型的数据:
集合可变(unhashable),hashable:计算机能够计算出哈希码的数据类型,
整型、浮点型等不可变数据类型都是hashable。

集合的”比较运算“:
set_3 = {1, 2, 3, 4, 6}
set_4 = {1, 3, 6}
set_5 = set_4
# 集合中,< 运算符表示真子集,<=运算符表示子集
print(set_4 < set_3, set_4 <= set_3)
print(set_5 < set_4, set_5 <= set_4)
# True True
# False True

# >运算符,超集运算(A包括B并且A还需要大于B)
print(set_3 > set_4)
# True
集合的增删操作:
set_6 = set()
# 向集合中添加元素
# add()、update()
# add()方法向集合中添加单个元素(必须是不可变数据类型)
set_6.add('Python')
set_6.add('Java')
# update()将某个序列中的元素添加到集合中
set_6.update({'HTML','C','C++'})
set_6.update(['Go','R','PHP'])
print(set_6)
# {'R', 'C', 'HTML', 'PHP', 'Go', 'Python', 'Java', 'C++'}

# 删除集合中元素:discard()、pop()、remove()、clear()
# discard()删除指定元素,discard()删除不存在的元素不报错
set_6.discard('R')
set_6.discard('Android')
print(set_6)
# {'C', 'HTML', 'PHP', 'Go', 'Python', 'Java', 'C++'}

# remove()删除指定元素,如果元素不存在,报错;使用remove前先做成员运算
# pop():从集合中随机删除一个元素并且返回该元素
content = set_6.pop()
print(content)
print(set_6)
# C
# {'HTML', 'PHP', 'Go', 'Python', 'Java', 'C++'}

# clear():清空
set_6.clear()
print(set_6)
# set()
元组(tuple)

概念:多个元素按照一定的顺序构成一定的序列

序列和列表的不同之处

  1. 列表使用[ ],元组使用( )
  2. 元组是可变的,列表是不可变的
元组的创建
t0 = ()
tuple1 = (20,)
tuple2 = (20, 'abc')
tuple3 = (20, 'abc', [1, 2, 3])
print(type(tuple1), type(tuple2), type(tuple3))
# 结果:
# <class 'tuple'> <class 'tuple'> <class 'tuple'>
元组的基本运算和操作
  1. 查看元组长度:len()

    print(len(tuple3))

    #结果:3

  2. 成员运算:

    print(print(([1, 2, 3]) not in tuple3))

    # 结果:False

  3. 拼接和重复:

    print(tuple3 + tuple3)
    print(tuple3 * 3)
    # 结果:
    #(20, 'abc', [1, 2, 3], 20, 'abc', [1, 2, 3])
    #(20, 'abc', [1, 2, 3], 20, 'abc', [1, 2, 3], 20, 'abc', [1, 2, 3])
    
    

​ 4.遍历:

  • 直接遍历:

    for i in tuple3:
    	print(tuple3,end=' ')
    # 结果:
    # 20 abc [1, 2, 3]
    
  • 间接遍历:

    for i in range(len(tuple3)):
    	print(len(t3uple, end=' '))
    # 结果:
    #20 abc [1, 2, 3]
    
  1. 元组的下标:

    正序从0开始,倒序从-1开始

    print(tuple3[1])
    print(tuple3[-2])
    # abc
    # abc
    
    
  2. 切片:

    列表、字符串、元组的切片一样的

元组的打包和解包
  • 打包:把多个使用逗号分割的值赋值给一个变量,多个值会打包成一个元组

    t1 = 20, 30, 'abc'
    print(t1,type(t1))
    # 结果:(20, 30, 'abc') <class 'tuple'>
    
  • 解包:如果有多个(多于三个)变量值要互相交换,必须使用打包解包操作,

    a, b, c = t1
    print(a, b, c)
    # 结果:20 30 abc
    
  • 解包的不定长参数:*

    t2 = 1, 10, 100, 1000
    i, j, k, m = t2
    i, *j, k = t2
    *l, n, m = t2
    o, p, *q = t2
    print(i, j, k)
    print(l, n, m)
    print(o, p, q)
    # 结果:
    # 1 [10, 100] 1000
    # [1, 10] 100 1000
    # 1 10 [100, 1000]
    
  • 解包操作对所有的序列都成立:

    a, *b, c = range(1, 10)
    print(a, b, c)
    # 结果:
    # 1 [2, 3, 4, 5, 6, 7, 8] 9
    
  • 两个或者三个变量交换值:

    在python中存在ROT-TOW 和 ROT-THREE可以交换两个元素的值

    a, b = 10, 20
    a, b = b, a
    print(a, b)
    # 结果:
    # 20 10
    
    a, b, c = 10, 20, 30
    a, b, c = c, a, b
    print(a, b, c)
    # 结果:
    # 30 10 20
    
字典:
字典的特点和性质:
  1. 字典中的每一个元素,都是一个键值对(key: value)
  2. 字典是无序的可变的数据类型。
  3. 字典的容器符号也是{ },每个元素用" , "隔开,字典的数据类型为dict
  4. 字典中的值可以是任意类型,值就是我们要保存的数据。
  5. 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。
  6. 字典存在增删改操作
创建一个字典:
dict0 = {}
dict01 =  dict()
# 空字典
dict1 = {'name': '张三', 'age': 30,
      'weight': 55, 'address': '地球村',
      'tel': 123132211, 'height': 175}
print(dict0, dict01, dict1)  # 打印字典
print(type(dict0), type(dict01), type(dict1))  # 打印类型
print(len(dict0), len(dict01), len(dict1))     # 打印字典长度
# 结果:
# {} {} {'name': '张三', 'age': 30, 'weight': 55, 'address': '地球村', 'tel': 123132211, 'height': 175}
# <class 'dict'> <class 'dict'> <class 'dict'>
# 0 0 6
字典的操作:

1.字典的遍历

dict1 = {'name': '寂静岭', 'age': ' 2006', 'classify': '恐怖电影'}
for i in dict1:
	print(i, end=' ')
# name age classify

2.字典的成员运算:

print('name' in dict1)
# True

3.获取字典中的值:

print(dict1['name'])
# 如果键不存在,报错:KeyError: '寂静岭'
# print(dict1['寂静岭'])

# get()方法:获取键对应的内容,如果键不存在,可以返回空值也可以返回指定内容
print(dict1.get('name'))
print(dict1.get('寂静岭'))    # 只能查找键不能查找值
print(dict1.get('寂静岭', '查无此结果'))
# 寂静岭
# None
# None
# 查无此结果

4.获取字典中所有的键:keys()

dict1 = {'name': '寂静岭', 'age': ' 2006', 'classify': '恐怖电影'}
print(dict1.keys(), type(dict1.keys()))   # 查看字典中键的类型
for i in dict1.keys():
    print(i)
# dict_keys(['name', 'age', 'classify']) <class 'dict_keys'>
# name age classify

5.获取字典中所有的值:values()

print(dict1.values(), type(dict1.values()))
# dict_values(['寂静岭', ' 2006', '恐怖电影']) <class 'dict_values'>

6.获取字典中的所有键值对:items()

print(dict1.items(), type(dict1.items()))
# dict_items([('name', '寂静岭'), ('age', ' 2006'), ('classify', '恐怖电影')]) <class 'dict_items'>
# ('name', '寂静岭')
# ('age', ' 2006')
# ('classify', '恐怖电影')
for key, value in dict1.items():
	print(key, value)
# name 寂静岭
# age  2006
# classify 恐怖电影

7.字典的增删查改:
(1)向字典中增加元素:

dict2 = {}     # 创建一个空字典
# 1.直接添加元素:
dict2['name'] = '金刚狼'
print(dict2)
# {'name': '金刚狼'}

# 2.使用setdefault():向字典中添加元素,如果不存在则直接添加,如果存在则不对字典进行修改
dict2.setdefault('name' , '狼叔')
dict2.setdefault('age', 40)
print(dict2)
# {'name': '金刚狼', 'age': 40}

(2)修改字典中的元素:update()

# 1.直接修改
dict2['name'] = '派大星'
print(dict2)
# {'name': '派大星', 'age': 40}

# 2.update():如果字典中某个值存则修改,不存在则添加(可以批量修改或者添加)
dict2.update({'age': 30, 'address': '比奇堡'})
print(dict2)
# {'name': '派大星', 'age': 30, 'address': '比奇堡'}

(3)删除字典中的元素:del 、 pop()

del dict2['address']
dict2.pop('age')
print(dict2)
# {'name': '派大星'}

8.字典推导式:

# 取出字典中值大于100的键和值
dict_A = {'a': 101, 'b': 99,'c': 20.1,'d': 160}
dict_B = {key: value for key, value in dict_A.items() if value > 100}
dict_C = {i: dict_A[i] for i in dict_A if dict_A[i] > 100 }
print(dict_B)
print(dict_C)
# {'a': 101, 'd': 160}
# {'a': 101, 'd': 160}

以上内容来自于上课笔记

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python编程语言中,有四种常用的集合数据类型,它们分别是列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。列表是一种有序和可更改的集合,允许重复的成员。元组是一种有序且不可更改的集合,也允许重复的成员。字典是一个无序、可变且有索引的集合,其中没有重复的成员。而集合是一种无序和无索引的集合,没有重复的成员。这四种集合数据类型在Python中都有着不同的特点和用途。 在Python中,列表、元组和字符串都属于序列,它们的元素都可以通过编号进行访问。而字典则属于映射,其中的元素是以键值对的形式存在的。集合则不属于序列或映射中的任何一种,它是一种独立的数据类型,用于存储一组不重复的元素。 总结起来,Python中的列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)都是常用的集合数据类型,它们各自有着不同的特点和用途。列表是有序和可更改的集合元组是有序且不可更改的集合字典是无序、可变且有索引的集合集合是无序和无索引的集合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [浅谈python四种集合数据类型—【列表、元组集合字典】](https://blog.csdn.net/QWERTYzxw/article/details/121479048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python 元组集合字典](https://download.csdn.net/download/weixin_38603219/13752298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值