集合
集合用 {} 定义,各个元素之间用 , 进行分隔。
集合不允许有重复元素,如果重复添加元素,则会进行自动过滤。集合是一种无序且无重复的数据结构,集合没有索引。
程序示例:
# 集合不允许有重复元素,如果重复添加元素,则会进行自动过滤
set1 = {1, 2, 3, 4, 5, 1, 2, 3, 4}
print(set1)
print(type(set1))
结果:
{1, 2, 3, 4, 5}
<class 'set'>
程序示例:
s1 = set() # 空集合,不能是 {},这表示空字典
print(s1)
print(type(s1))
结果:
set()
<class 'set'>
程序示例:
print(set([1, 2, 3, 1, 2, 3])) # 通过列表创建
print(set((1, 2, 3, 1, 2, 3))) # 通过元组创建
print(set("HelloHello")) # 通过字符串创建,可以看到结果是乱序的
print(set({"Name": "John", "Age": 25})) # 通过字典创建,生成的集合只有键
结果:
{1, 2, 3}
{1, 2, 3}
{'l', 'e', 'o', 'H'}
{'Name', 'Age'}
程序示例:
print(1 in set([1, 2, 3]))
print(2 not in set([1, 2, 3]))
结果:
True
False
程序示例:
print(len(set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])))
print(max(set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])))
print(min(set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])))
结果:
10
10
1
程序示例:
s = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(s) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
del s
# print(s) # NameError: name 's' is not defined
程序示例:
s = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# print(s[1]) # TypeError: 'set' object is not subscriptable
程序示例:
# 集合遍历
print("-" * 30)
s = set("hello")
for i in s:
print(i)
print("-" * 30)
for k, v in enumerate(s):
print(k, v)
结果:
------------------------------
e
o
h
l
------------------------------
0 e
1 o
2 h
3 l
程序示例:
s = set("hello")
print(s)
s.remove("h")
print(s)
结果:
{'h', 'e', 'o', 'l'}
{'e', 'o', 'l'}
程序示例:
s = set("hello")
print(s)
s.add("ZZ")
print(s)
s.add("h") # 添加已有元素,集合不发生变化
print(s)
结果:
{'l', 'e', 'h', 'o'}
{'l', 'o', 'h', 'e', 'ZZ'}
{'l', 'o', 'h', 'e', 'ZZ'}
程序示例:
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
print(s1 & s2) # 求交集
print(s1 | s2) # 求并集
结果:
{3, 4, 5}
{1, 2, 3, 4, 5, 6, 7}
程序示例:
# 利用集合对数组去重、计数
scores = [80, 80, 80, 40, 40, 40, 50, 50, 60]
scoresSet = set(scores)
print(scoresSet)
for i in scoresSet:
print("%d: %d" % (i, scores.count(i)))
结果:
{80, 40, 50, 60}
80: 3
40: 3
50: 2
60: 1
浙公网安备 33010602011771号