集合的常规操作

24 篇文章 1 订阅
12 篇文章 1 订阅

题目1:

一.关系运算

#  有如下两个集合,pythons是报名python课程的学员名字集合,sec是报名安全课程的学员名字集合

#  py ={‘jack’,‘allen’,‘r0ya1’,‘python’,‘龟叔’}

#  sec = {‘kali’,‘林纳斯’,‘r0ya1’,‘道哥’,360}

#  1. 求出即报名python又报名安全课程的学员名字集合

#  2. 求出所有报名的学生名字集合

#  3. 求出只报名python课程的学员名字

#  4. 求出没有同时这两门课程的学员名字集合

解题思路:

这些题都是常规的操作,所以没有什么思路,这里介绍两种操作方式,一种是运算符形式,一种是函数形式

py = {'jack','allen','r0ya1','python','龟叔'}
sec = {'kali','林纳斯','r0ya1','道哥',360}
1.求出即报名python又报名安全课程的学员名字集合
py_sec_01 = py_sec = py & sec
py_sec_02 = py.intersection(sec)

print(py_sec_01)
print(py_sec_02)
2. 求出所有报名的学生名字集合
all_01 = py | sec
all_02 = py.union(sec)

print(all_01)
print(all_02)
3.求出只报名python课程的学员名字
py_01 = py - sec
py_02 = py.difference(sec)

print(py_01)
print(py_02)
4. 求出没有同时这两门课程的学员名字集合
one_01 = py ^ sec
one_02 = py.symmetric_difference(sec)

print(one_01)
print(one_02)

题目2:

去重

1.有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序

   2.在上题的基础上,保存列表原来的顺序

   3.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序

l=[
    {'name':'egon','age':18,'sex':'male'},
    {'name':'alex','age':73,'sex':'male'},
    {'name':'egon','age':20,'sex':'female'},
    {'name':'egon','age':18,'sex':'male'},
    {'name':'egon','age':18,'sex':'male'},
] 

解题思路:

常规题

1.有列表l=[‘a’,‘b’,1,‘a’,‘a’],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序
l=['a','b',1,'a','a']
new_l = list(set(l))
print(new_l)
2.在上题的基础上,保存列表原来的顺序
l=['a','b',1,'a','a']
new_l = []
for i in l:
    if i not in new_l:
        new_l.append(i)
print(new_l)
3.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序
l=[
    {'name':'r0ya1','age':18,'sex':'male'},
    {'name':'kali','age':73,'sex':'male'},
    {'name':'root','age':20,'sex':'female'},
    {'name':'r0ya1','age':18,'sex':'male'},
    {'name':'kali','age':18,'sex':'male'},
] 

解题:

l=[
    {'name':'r0ya1','age':18,'sex':'male'},
    {'name':'kali','age':73,'sex':'male'},
    {'name':'root','age':20,'sex':'female'},
    {'name':'r0ya1','age':18,'sex':'male'},
    {'name':'kali','age':18,'sex':'male'},
]

new_l = []
for i in l:
    if i not in new_l:
        new_l.append(i)
print(new_l)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值