python基础教学习题_python基础学习-day10==课后作业练习(集合)

# 作业:

#  一.关系运算

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

#   pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}

#   linuxs={'wupeiqi','oldboy','gangdan'}

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

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

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

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

import os# 第二大题第三小题文件操作,对文件重命名需要这个头文件

pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}

linuxs={'wupeiqi','oldboy','gangdan'}

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

print(pythons & linuxs)

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

print(pythons | linuxs)

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

print(pythons - linuxs)

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

print(pythons ^ linuxs)

# 二.去重

#

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

#

#去重,无需保持原来的顺序

l=['a','b',1,'a','a']

print(set(l))

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

#

#去重,并保持原来的顺序

#方法一:不用集合

l=[1,'a','b',1,'a']

l1=[]

for i in l:

if i not in l1:

l1.append(i)

print(l1)

#方法二:借助集合

l1=[]

s=set()

for i in l:

if i not in s:

s.add(i)

l1.append(i)

print(l1)

# 3.去除文件中重复的行,肯定要保持文件内容的顺序不变

#通过文件将文件中的每一行数据读取出来

new_list=[]

with open('db.txt','r',encoding='utf-8') as f:

for line in f:

#print(line)

#通过new_list给文件中的数据去重,并且保证原来的位置不变

if line not in new_list:

new_list.append(line)

print(new_list)

#将去重后的数据,重新写入到当前的db.txt文件中

with open('db.txt','w',encoding='utf-8') as f:

for line in new_list:

f.write(line)

# 4.有如下列表,列表元素为不可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'},

# ]

#

#列表中元素为可变类型时,去重,并且保持原来顺序

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'},

]

list=[]

for dict in l:

if dict not in list:

list.append(dict)

print(list)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值