random ,集合

import random
import string

# 随机整数:
print random.randint(1,50)

# 随机选取0到100间的偶数:
print random.randrange(0, 101, 2)

# 随机浮点数:
print random.random()
print random.uniform(1, 10)

# 随机字符:
print random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()')

# 多个字符中生成指定数量的随机字符:
print random.sample('zyxwvutsrqponmlkjihgfedcba',5)

# 从a-zA-Z0-9生成指定数量的随机字符:
ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
print ran_str

# 多个字符中选取指定数量的字符组成新字符串:
print ''.join(random.sample(['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'], 5))

# 随机选取字符串:
print random.choice(['剪刀', '石头', '布'])

# 打乱排序
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print random.shuffle(items)

更新集合
s=frozenset('zhangyu')  --创建集合 
s4=set('abc')
s4=set([1,2,3])

s.add() --加任意字符或者整数
s.update() ---加字符
s.remove() --删除
v = set1.pop()删除元素

三、集合的运算

 

在python 中,集合的概念,有点类似数学之中集合的概念。可以求出交集并集等运算操作。

 

1、交集 set.intersection()

场景:有两组学生,第一组学生,选修了语文课,第二组学生,选修了数学课。但是其中有一些学生即选修了语文,也选修了数学,要求快速定位到这种学生。

例1,非集合方式。

复制代码
#学习数学的人
stu_shuxue = ["陈司","李大","王二"]
#学习语文的人
stu_yuwen = [ "陈司","王二" ]
#两者都学的人,先暂定为空
stu_double = []
#循环输出学习数学的人
for stu in stu_shuxue:
    #如果学习数学的人,也在stu_yuwen 学习语文的人里。就是两者都学的人。并追加到stu_double集合。
    if stu in stu_yuwen:
        stu_double.append(stu)
print(stu_double)
复制代码

运行结果

 

 

例2,集合方式

复制代码
stu_shuxue = {"陈司", "李大", "王二"}
stu_yuwen = {"陈司", "王二"}
#取交集
print(stu_shuxue.intersection(stu_yuwen))
#写法2
print(stu_shuxue&stu_yuwen)
复制代码

运行

 

2、并集,set.union()方法

理解:把两个结合中所有元素组合在一起,并排重后取出结果。

场景:还是刚才的两组学生,求选修了数学和语文的全部同学名单。

复制代码
stu_shuxue = {"陈司", "李大", "王二"}
stu_yuwen = {"陈司", "王二"}
#取并集
print(stu_shuxue.union(stu_yuwen))
#写法2
print(stu_shuxue | stu_yuwen)
复制代码

运行

 

 

3、差集 set.difference()

理解:两个集合相减,A 减 B ,A 里有 1、2、3   B里有 2、3、4 如果 A 与B 的差集,会发现A 有 1 是B里没有的。所以A 减 B 等于 1 ,反过来 B 减 A 就等于4 ,因为4 是A 集合里没有的元素。

也就是说,发起差集的集合,会把自己有,而对方没有的元素得到。说的直白点,我是帅,高,富。 你是 丑 , 高,富。咱们都有高和富,我减去你就是帅。你减去我就是丑。

例:

复制代码
set1 = {"陈司","高","富","帅"}
set2 = {"某人","高","富","丑"}
#方法1 print(set1.difference(set2))
#方法2 print(set1-set2)
复制代码

 

 运行结果

 

4、交叉补集 set.symmetric_difference()

理解。集合A 是1、2、3 集合B 是 2、3、4 交叉补集就只保留  1 和 4 。因为 1 是 A 独有的, 4 是B 独有的。交叉补集会去掉共有的部分,只保留双方独有的部分。

场景:选修语文的有一组学生,选修数学的有一组学生。已知有的学生既选修了数学,又同时选修了语文,求只选修了一门课程的学生。这种情况就适合交叉补集。

复制代码
#学习语文的
set_yuwen = {"陈司","A","B","C"}
#学习数学的 set_shuxue = {"某人","A","B","C"}
#方法1 print(set_shuxue.symmetric_difference(set_yuwen))
#方法2 print(set_yuwen^set_shuxue)
复制代码

运行结果

 



 
posted @ 2021-01-02 14:21  橄榄叶  阅读(494)  评论(0)    收藏  举报