python创建一个空集合且赋值给变量set1的命令是_python-集合(set)知识整理

####   集合     ####

set 集合 和 线性结构

线性结构  的查询时间复杂度是  O(n),即随着数据规模的增大而增加耗时。

set集合 ,dict 字典  等结构,内部使用hash值作为key,时间复杂度可以做到O(1),查询时间和数据规模无关

可hash

数字型:int、float、complex

布尔型:True、False

字符串:string、bytes

元组:tuple

None

以上都是不可变类型,成为可哈希 类型。

set 的元素必须是可hash的。*** 不管你嵌套多少层,只要有不可哈希的元素就会报错 !!!

集合特性: 1、元素必须是不可变类型(数字,字符串,元组),必须可ha

2、不同元素组成,如果相同就会自动去重,只保留一个。

3、集合是无序的

4、集合是可变类型

定义集合:s = {1,4,32,1}

使用s = set()时,必须是可迭代对象才行。

# 集合是一个可变的、无序的,不重复的数据组合,

它的主要作用如下:

1、去重,把一个列表变成集合,就自动去重了

2、关系测试,测试两组数据之前的交集、差集、并集等关系

(注:set元素要求必须可hash才能加入到set元素中)因为没有顺序,所以无法被索引,但是可以被迭代。

list01 = [1,4,5,6,7,8,4,5,6]

print(list01,type(list01))

# [1, 4, 5, 6, 7, 8, 4, 5, 6]

list01 = set(list01)

print(list01,type(list01))

# {1, 4, 5, 6, 7, 8}

基本概念:

全集

所有元素的集合,

子集subset和超集superset

一个集合A所有元素都在另一个集合B内,A是B的子集,B是A的超集

真子集和真超集

A是B的子集,且A不等于B,A就是B的真子集,B是A的真超集。

并集:过个集合合并的结果

交集:多个集合的公共部分

差集:集合中除去和其他集合公共部分

# ################### 交集 (intersection)符号为:【 & 】#########################

# 交集 表示符号:& 表示 集合1和集合2 中都有的。

list02 = set([2,6,0,22,8,4])

print(list01,list02)

# {1, 4, 5, 6, 7, 8} {0, 2, 4, 6, 8, 22}

# # 交集 intersection

print(list01.intersection(list02))

# ################### 并集 (union)符号为: 【 | 】#########################

# 并集 表示符号:| 表示 集合1或者是集合2中有的

# # 并集 union 并起来去重

print(list01.union(list02))

# {0, 1, 2, 4, 5, 6, 7, 8, 22}

# ###################差集 (difference)符号为:【 - 】#########################

A -P = {} ,A -P 为空集,说明P包含A

# 差集表示符号:- 表示 set01 - set02 表示 set01中有的,set02中没有的

# set02 - set01 表示 set02中有的,set01中没有的

# # 差集 difference list01中有的,list02中没有的

print(list01.difference(list02))

# {1, 5, 7}

print(list02.difference(list01))

# {0, 2, 22}

# ################### 子集 (issubset) #########################

aa.issubset(bb) 进行判断,aa是不是bb的子集

# ################### 父集 (issuperset) #########################

# ################### 反向差集| 交叉补集| 对称差集 (symmetric_difference)符号为:【 ^ 】 #########################

# list01和list02里面,互相都没有的,取出来放到一块

print(list01.symmetric_difference(list02))

########################## 集合的功能介绍及举例说明 ###################################

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# __author__:anxu.qi

# Date:2018/12/4

#######################################################################################

a = {11, 22, 33, 44, 66, 99, "oopp",1123, "111"}

b = {11,22,88,99,"oopp","opop"}

# #####################add 向集合中添加元素 注:一次只允许添加一个元素 ####

# a.add("vivo")

# print(a) # {33, 66, 'opop', 'vivo', 11, 44, 77, 22, 55}

# ####################clear 删除集合的所有的元素 #################

# #################### copy 浅copy ####

重新赋值一份数据给s1

# #################### difference A中存在的B中不存在的 ####

# A中存在,B中不存在 返回一个新值,变量接受

c = a.difference(b)

print(c) # {33, 66, 1123, 44, '111'}

# #################### difference_update A中存在的B中不存在的,结果更新为A ####

a.difference_update(b)

print(a) # {33, 66, 1123, '111', 44}

a = {11, 22, 33, 44, 66, 99, "oopp",1123, "111"}

b = {11,22,88,99,"oopp","opop"}

# ####################discard移除指定的元素,不存在不报错 ####

# ####################remove 移除指定的元素,不存在则提示ERROR。 ####

做的是key的比较

a.discard(11111)

# #################### intersection 取出交集并赋值给cc #####

cc = a.intersection(b)

print(cc) # {11, 'oopp', 99, 22}

# ####################intersection_update 取出交集并赋值给A ####

a.intersection_update(b)

print(a) # {'oopp', 11, 99, 22}

# #################### isdisjoint 如果没有交集返回True,有交集为False ####

print(a.isdisjoint(b)) # False

se = {11,22,33,44}

be = {11,22}

# #################### issubset # 另一个集合是否包含此集合, 子序列 ####

print(be.issubset(se)) # True

# #################### issuperset # 这个集合是否包含另一个集合 父序列 ####

print(se.issuperset(be)) # True

# ####################pop # 移除并返回任意集合元素,如果集合为空,则引发KeyError####

aaa = se.pop() # 可以将移除的那个元素赋值给其他值 ####

print(aaa) # 33

# #################### symmetric_difference # 将se中存在的be不存在的,be不存在的se中存在的合并到了一起,赋值为dddd ####

dddd = se.symmetric_difference(be)

print(dddd) # {33, 99, 44, 77, 88}

cccc = se.symmetric_difference(be)

print(cccc) # {33, 99, 44, 77, 88}

# #################### symmetric_difference_update # 将se中存在的be不存在的,be不存在的se中存在的合并到了一起,赋值为se ####

se.symmetric_difference_update(be)

print(se) # {33, 99, 44, 77, 88}

# ##############################

se = {11,22,33,44,99}

be = {11,22,77,88}

# #################### union # 取并集 ####

tt = se.union(be)

print(tt) # {33, 99, 11, 44, 77, 22, 88}

# ####################update #更新的时候,必须得是可迭代(Iterable)的 ####

|= 就等于update

se.update([666,888])

se.update(666,888)

print(se)

# ########################################################################################################

list 随着规模的增加,效率在往下走,

set 随着规模的增加,效率还是那样

集合补充:

不可变集合:frozonset

#不考虑顺序的快速去重

#####有一篇介绍python集合的文章,写的很好

https://tw.saowen.com/a/ab713431b675abe3d71cf675d04082b9601135ba484291bb2b3a95b6ccad0e4f

### 回答1: 可以,可以使用zip()函数将两个字典的键值对打包成元组,然后在for循环中分别取出每个字典中键相同的不同值,赋值变量。例如: dict1 = {'a': 1, 'b': 2, 'c': 3} dict2 = {'a': 'apple', 'b': 'banana', 'c': 'cherry'} for key, value1, value2 in zip(dict1.keys(), dict1.values(), dict2.values()): print(key, value1, value2) 输出结果为: a 1 apple b 2 banana c 3 cherry ### 回答2: 可以在一个for循环里面分别调用两个字典中键相同但值不同的元素,并分别赋值给不同的变量。 假设有两个字典dict1和dict2,它们都包含键相同但值不同的元素。我们可以通过使用zip函数和字典的items方法来实现。 具体步骤如下: 1. 使用zip函数将两个字典的键值对进行配对。即将dict1和dict2分别传入zip函数,这将返回一个包含键值对元组的迭代器。 2. 在for循环里,使用两个变量(比如k和v)来同时迭代键值对。 3. 对于每个迭代的键值对,我们可以使用条件语句来判断键是否相同。如果相同,可以将值分别赋值给两个不同的变量(比如value1和value2)。 具体代码如下: ```python dict1 = {"key1": "value1", "key2": "value2", "key3": "value3"} dict2 = {"key1": "new_value1", "key2": "new_value2", "key3": "new_value3"} for (k1, v1), (k2, v2) in zip(dict1.items(), dict2.items()): if k1 == k2: value1 = v1 value2 = v2 print(f"键为{k1}的值在dict1中为{value1},在dict2中为{value2}") ``` 上述代码将输出: ``` 键为key1的值在dict1中为value1,在dict2中为new_value1 键为key2的值在dict1中为value2,在dict2中为new_value2 键为key3的值在dict1中为value3,在dict2中为new_value3 ``` 通过上述操作,我们可以在一个for循环中分别调用两个字典中键相同但值不同的元素,并将其赋值给不同的变量。 ### 回答3: 可以在一个for循环中分别调用两个字典中键相同但值不同的对应项,并赋值给不同的变量。以下是一个示例代码: ```python dict1 = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} dict2 = {'key1': 'value4', 'key2': 'value5', 'key3': 'value6'} common_keys = set(dict1.keys()) & set(dict2.keys()) # 获取两个字典中的共同键 for key in common_keys: value1 = dict1[key] # 调用第一个字典中键对应的值 value2 = dict2[key] # 调用第二个字典中键对应的值 print(f'字典1中键 "{key}" 的值为:{value1}') print(f'字典2中键 "{key}" 的值为:{value2}') ``` 在这个例子中,两个字典中有共同的键:'key1'、'key2'和'key3'。在for循环中,我们通过共同键找到对应的值,分别赋值给不同的变量value1和value2,并在循环内打印出来。这样就能够分别调用两个字典中键相同但值不同的对应项,并将其赋值给不同的变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值