Python_day04--集合set

一、集合的定义

set集合,是一个无序且不重复的元素集合。

集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 for 循环迭代集合的成员。但是因为集合本身是无序的,不可以为集合创建索引或执行切片(slice)操作,也没有键(keys)可用来获取集合中元素的值。

 1、集合元素是不可重复的;
s = {1,2, 3, 1, 2, 3}
print(s)


2、列表去重;
names = ['hello', 'world', 'hello']
print(list(set(names)))


3、集合的特性: (索引, 切片, 重复, 连接,)===> 不支持, 因为无序;  成员操作符, for循环 ===> 支持;


4、集合是无序的数据类型: 添加元素的顺序和存储的顺序无关;

s = {1,2,3,33,44,55}

1).print(s)

s.add(22)

print(s)

2).成员操作符

print(1 in s)

3).for循环
for i  in s:

    print(i, end='')




 5、添加元素

1).增加单个元素;

s = {'b','3','a']

 print(s)

s.add(4)

 print(s)

2).增加多个元素;
s.update({  5, 6})
print(s)


6、删除指定元素
 s.remove(1)

 print(s)



7、 随机删除集合元素

s = {1,2,3,4,5,6,7,8,9}

s.pop()

print(s)

8、清除集合中所有元素
s.clear()

print(s)


9、去重

s = {1, 2, 3, 1, 2, 3}

print(s)

# 去重
 li = [1, 2, 3, 1, 2, 3]
 print(list(set(li)))

10、求集合的交集、并集

s1 = {1, 2, 3}

s2 = {1, 2, 4}

print("并集:", s1.union(s2))
print("交集:", s1.intersection(s2))
# 求交集时, 把s1的值更新为交集的值;

s1.intersection_update(s2)

print(s1)



11、s1-(s1 and s2 的交集)

print(s1.difference(s2))    # s1-instersection(s1,s2)
print(s2.difference(s1))    # s2-intersection(s1,s2)


12、求差集时, 把s2的值更新为差集的值;

print(s2.difference_update(s1))    # s2-union(s1,s2)

print(s2)



13、对等差分;

s1 = {1, 2, 3,5}
s2 = {1, 2, 4,6}

print(s1.symmetric_difference(s2))

14、

print(s1 | s2)
print(s1 & s2)
print(s1 - s2)
print(s2 - s1)


15、子集、父集:

s1 = {1, 2, 3,5}

s2 = {1, 2, }


1)s1是s2的子集?
print(s1.issubset(s2))
2)s1是s2的父集?
print(s1.issuperset(s2))
3)s1和s2没有交集么? 如果没有交集True,否则返回False;

print(s1.isdisjoint(s2))

16、练习:(华为机试题)题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000), N是用户输入的,对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作;

# 在1-1000之间随机生成10个数字
random.sample(range(1,1000), 10)

import random
N = int(input("N:"))     #将input接收的str,转化为int类型;
s = set()      # 定义空集合时, 不能为s={}, 应该是s = set()
for i in range(N):   # 4, (0,1,2,3)
    num = random.randint(1,1000)
    s.add(num)            # 将随机生成的数加入到集合中;
print(sorted(s))     # 对集合进行排序;


17、练习:集和练习

集合练习:
               随机产生2组各个数字的列表,每组10个数字,如下要求:
                    每个数字取值范围[10,20]
                    统计20个数字中,一共有多少个不同的数字?  # {1,2,3} {2,3,4} # 并集
                    2组中,不重复的数字有几个?分别是什么?{1,2,3} {1,2,4}  # 对等差分;
                    2组中,重复的数字有几个?分别是什么?






















猜你喜欢

转载自blog.csdn.net/biu_biu_0329/article/details/80193102