Python集合-B09

集合的定义

集合(set)的定义是把一定范围的、确定的、可以区别的事物当作一个整体来看待”,集合中的各个事物通常称为集合的元素。集合具有无序性、互异性、确定性。因此,Python中的集合肯定不能够支持索引运算,集合的互异性决定了集合中不能有重复元素。

集合的创建

# 创建集合的字面量语法(重复元素不会出现在集合中)
set1={1,1,2,3,1,1,2}
print(type(set1),len(set1))       # <class 'set'> 3
print(set1)                       # {1, 2, 3}
# 创建集合的构造器语法
set2=set('hello')
print(set2)                       # {'h', 'e', 'l', 'o'}
# 创建集合的生成式语法(将列表生成式的[]换成{})
set3 = {num for num in range(1, 20) if num % 3 == 0 or num % 5 == 0}
print(set3)                       # {3, 5, 6, 9, 10, 12, 15, 18}

# 遍历集合中的元素
for elem in set1:
    print(elem)                   # 1 2 3
# 空集合
set5=set()
print(type(set5))                 # <class 'set'>
print(set5)                       # set()

集合的运算

成员运算

set1 = {1, 2, 3, 4, 5}
set2 = {2, 4, 6, 8}
# 成员运算  -确定性(元素要么在集合中,要么不在)
# 集合的成员运算在效率上远远高于列表的成员运算
print(1 in set1)                    # True
print(1 not in set1)                # False

交并差运算

# 交集
print(set1 & set2)                  # {2, 4}
print(set1.intersection(set2))      # {2, 4}
# 并集
print(set1 | set2)                  # {1, 2, 3, 4, 5, 6, 8}
print(set1.union(set2))             # {1, 2, 3, 4, 5, 6, 8}
# 差集
print(set1-set2)                    # {1, 3, 5}
print(set1.difference(set2))        # {1, 3, 5}
print(set2-set1)                    # {8, 6}
print(set2.difference(set1))        # {8, 6}
# 对称查(并集-交集)
print(set1^set2)                    # {1, 3, 5, 6, 8}
print((set1|set2)-(set1&set2))      # {1, 3, 5, 6, 8}

比较运算

set3={1,2,3,4,5,6,7,8,9}
# 判断真子集
print(set1<set3)                    # True
# 判断子集
print(set1<=set3)                   # True
# 判断超集
print(set3>set2)                    # True

集合的操作

set1={'apple','banana','pitaya','apple'}
# 添加元素
set1.add('grape')
set1.add('durian')
print(set1)                 # {'banana', 'pitaya', 'apple', 'grape', 'durian'}
# 删除元素
set1.discard('pitaya')  # discar指定元素删除
set1.pop()   # 随机删除
print(set1)                 # {'apple', 'grape', 'durian'}
# 清空元素
set1.clear()
print(set1)                 # set()

该错误表明Java的`keytool`无法找到指定的证书文件。以下是可能的原因和解决方法: ### 原因分析: 1. **路径格式问题**: - 路径中包含空格或特殊字符(如`openlogic-openjdk-8u362-b09-windows-64`重复出现,可能是输入错误)。 - Windows路径需使用反斜杠`\`,但在命令行中需转义为`\\`或改用正斜杠`/`。 2. **文件不存在**: - 指定的证书文件`TP-LINK-ROOT-CA.crt`可能不在目标路径中。 3. **权限问题**: - 当前用户可能无权访问该路径或文件。 ### 解决方法: 1. **修正路径格式**: ```bash keytool -import -trustcacerts -file "D:/java/openlogic-openjdk-8u362-b09-windows-64/jre/lib/security/TP-LINK-ROOT-CA.crt" -alias tp-CA -keystore "D:/java/openlogic-openjdk-8u362-b09-windows-64/jre/lib/security/cacerts" -storepass changeit ``` - 使用双引号包裹路径,避免空格或特殊字符问题。 - 替换反斜杠为正斜杠。 2. **验证文件是否存在**: - 在文件资源管理器中检查路径`D:\java\openlogic-openjdk-8u362-b09-windows-64\jre\lib\security\`下是否存在`TP-LINK-ROOT-CA.crt`。 3. **检查JDK路径**: - 确认路径`D:\java\openlogic-openjdk-8u362-b09-windows-64\openlogic-openjdk-8u362-b09-windows-64`是否重复,可能应为: ```bash D:\java\openlogic-openjdk-8u362-b09-windows-64\jre\lib\security\ ``` 4. **以管理员身份运行CMD**: - 右键点击命令提示符,选择“以管理员身份运行”,确保有权限访问目标文件和密钥库。 ### 示例修正后的命令: ```bash keytool -import -trustcacerts -file "D:\java\openlogic-openjdk-8u362-b09-windows-64\jre\lib\security\TP-LINK-ROOT-CA.crt" -alias tp-CA -keystore "D:\java\openlogic-openjdk-8u362-b09-windows-64\jre\lib\security\cacerts" -storepass changeit ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值