题目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)