集合

集合用 {} 定义,各个元素之间用 , 进行分隔。

集合不允许有重复元素,如果重复添加元素,则会进行自动过滤。集合是一种无序且无重复的数据结构,集合没有索引。

程序示例:

# 集合不允许有重复元素,如果重复添加元素,则会进行自动过滤
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
posted @ 2025-11-03 23:02  YouKong  阅读(0)  评论(0)    收藏  举报