Ⅰ python如何删除list里重复的元素
这个可简单可复杂。
简单的:利用集合
a=list(set(a))#这样就可以了,是不是很简单
复杂的:
就是先对列表排序,然后比较相邻元素是否相同,相同的则删除后面的。大体算法思路,代码自己写吧
当然还有其他的算法...
-----------------------------------------------------------------------------------
额, 不好意思,看错了
defQ(a):
aa=[]
foriina:
ifa.count(i)==1:
aa.append(i)
returnaa
这个就可以了,利用 list.count(obj) 计算obj在list中出现的次数进行判断
Ⅱ python中怎么删除文件中指定的行
删除文件的某一行,可以跳过你要删除的行进行读写,如:
1
2
3
4
data = open(filename, 'rt').readlines()
with open(filename, 'wt') as handle:
handle.writelines(data[:tobedeleted])
handle.writelines(data[tobedeleted+1:])
其中data是逐行读取文件,
handle.writelines进行读写,跳过tobedeleted行
Ⅲ Python的集合有哪些操作
集合是一个无序的,不重复的数据组合,它有着两个主要作用:去重以及关系测试。去重指的是当把一个列表变成了集合,其中重复的内容就自动的被去掉了
关系测试指的是,测试两组数据之间的交集、差集、并集等关系。
去重测试代码如下:
#创建一个列表--里面存在一些重复值
test_list = [1,2,3,4,2,2,3,4,3,2,3,4]
#利用集合将列表中重复的内容去掉
test_list = set(test_list)
#打印测试并且查看test_list被赋予新值后的数据类型print(test_list,type(test_list)) # {1, 2, 3, 4}
Tip:需要注意的是,集合和字典一样都是无序的。
获取交集需要使用集合中的方法intersection方法,获取两个集合中的交集代码如下:
#创建两个集合,并且获取集合的交集
test_list_01 = set(['YanYan','LiBai','LuLu','YangMi'])
test_list_02 = set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])
#在上面的两个集合中,存在相同的值,那么现在我们取出两个集合中的交集
test_intersection = test_list_01.intersection(test_list_02)print(test_intersection) # {'YanYan', 'LiBai'}
获取并集的方式需要采用集合中union方法,获取两个集合的并集代码如下:
#创建两个集合,并且获取集合的交集
test_list_01 =set(['YanYan','LiBai','LuLu','YangMi'])
test_list_02 =set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])
#采用集合中的union方法获取并集
test_list_union = test_list_01.union(test_list_02)
print(test_list_union) # {'LiBai', 'LuLu', 'ZhangXueYou', 'LiuDeHua', 'YangMi', 'YanYan'}
获取差集的方式要采用集合中的difference方法,获取两个集合的差集的代码如下所示:
#创建两个集合,并且获取集合的交集
test_list_01 = set(['YanYan','LiBai','LuLu','YangMi'])
test_list_02 = set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])
#使用集合中的difference方法来获取差集
test_difference = test_list_01.difference(test_list_02)
test_difference2 = test_list_02.difference(test_list_01)
print(test_difference) # {'LuLu', 'YangMi'}print(test_difference2) # {'ZhangXueYou', 'LiuDeHua'}
判断一个集合是否是另外一个集合的子集可以使用issubset()方法,同样,还可以使用issuperset()方法判断一个集合是否是另外一个集合的父级
代码如下:
#创建两个集合
list_set = set([1,2,3,4])
list_son = set([2,3])
#判断list_son是否是list_set的子集print(list_son.issubset(list_set)) # True#判断list_set是否是list_son的父级print(list_set.issuperset(list_son)) # True
对称差集(又有人称之为叫做反向差集),指的是取出两个集合中互相都没有的值取出放在一个集合中。
代码如下:
#创建两个集合
list_set_num1 = set([1,3,5,7,9])
list_set_num2 = set([2,3,4,6,9,10])
#获取两个集合的对称差集print(list_set_num1.symmetric_difference(list_set_num2)) # {1, 2, 4, 5, 6, 7, 10}
如果上述的难以理解的话,可以对对称差集理解为去掉两个集合中都存在的内容,将剩余的内容取到一个新的集合中。
除了上述的这些方法实现的关系功能之外,还有一个方法isdisjoint(),功能是判断两个集合中是否有相同的值,如果两个集合中没有相同的值(即没有交集),那么返回True
代码如下:
#创建集合
test_set_num1 = set([1,2,3,4])
test_set_num2 = set([5,6,7,8])
test_set_num3 = set([1,3,7,8])
#使用isdisjoint()方法来判断print(test_set_num1.isdisjoint(test_set_num2)) # Trueprint(test_set_num1.isdisjoint(test_set_num3)) # False
通过运算符来进行关系测试
在上面的应用中,主要是通过python中的方法进行的关系测试,那么在python中,除了使用方法以外,还可以使用关系运算符来进行关系测试。
实例代码如下:
test_list_01 =set(['YanYan','LiBai','LuLu','YangMi'])
test_list_02 =set(['YanYan','LiuDeHua','ZhangXueYou','LiBai'])
#获取交集&print(test_list_01 & test_list_02) # {'LiBai', 'YanYan'}
#获取并集|print(test_list_01 | test_list_02) # {'LuLu', 'LiBai', 'LiuDeHua', 'YanYan', 'ZhangXueYou', 'YangMi'}
#获取差集-print(test_list_01 - test_list_02) # {'LuLu', 'YangMi'}print(test_list_02 - test_list_01) # {'LiuDeHua', 'ZhangXueYou'}
#获取对称差集print(test_list_01 ^ test_list_02) # {'ZhangXueYou', 'YangMi', 'LuLu', 'LiuDeHua'}
集合的增删改查
添加
语法:Set.add()
代码如下:
#创建一个集合
test_set =set(['YanYan'])
#添加
test_set.add('LiBai') #添加一项
test_set.update(['LuLu','JingJing']) #一次性向集合中添加多项
#输出集合
print(test_set) #{'YanYan', 'LuLu', 'LiBai', 'JingJing'}
删除
删除集合中的某一个元素可以使用remove方法
代码如下:
#创建一个集合
test_set = set(['YanYan'])
#使用remove方法删除元素
test_set.remove('YanYan')print(test_set) # set()
删除项目除了使用remove以外,还可以使用pop()方法,但是pop()方法删除内容不能够指定,只是随机删除。
pop方法会把删除的内容返回,示例代码如下:
#创建一个集合
test_set = set([20,9,'a',1,2,3,4])print(test_set.pop()) # 1print(test_set.pop()) # 2print(test_set.pop()) # 3
删除元素还可以使用discard()方法,这个方法没有返回值,如果打印返回值的话会输出None
#创建一个集合
test_list = set([1,2,3,4,5])
#使用discard()方法删除--注意,discard()方法删除返回None,也就是没有返回值print(test_list.discard(3)) # None#此时原集合中的3已经被删除了print(test_list) # {1, 2, 4, 5}
查询
xins #判断x是否是s的成员
xnotins 判断x是否是s的成员
len(x) #查看x的长度
s <= t #测试是否s中的每一个元素都在t中
s >= t #测试是否t中的每一个元素都在s中
Ⅳ python list怎么删除一个元素
1、使用set函数
set是定义集合的,无序,非重复
numList = [1,1,2,3,4,5,4]
print(list(set(numList)))
#[1, 2, 3, 4, 5]
2、先把list重新排序,然后从list的最后开始扫描
a = [1, 2, 4, 2, 4, 5,]
a.sort()
last = a[-1]
for i in range(len(a) - 2, -1, -1):
if last == a[i]:
del a[i]
else:
last = a[i]
print(a) #[1, 2, 4, 5]
3、使用字典函数
a=[1,2,4,2,4,]
b={}
b=b.fromkeys(a)
c=list(b.keys())
print(c) #[1, 2, 4]
4、append方式
def delList(L):
L1 = []
for i in L:
if i not in L1:
L1.append(i)
return L1
print(delList([1, 2, 2, 3, 3, 4, 5])) #[1, 2, 3, 4, 5]
5、count + remove方式
def delList(L):
for i in L:
if L.count(i) != 1:
for x in range((L.count(i) - 1)):
L.remove(i)
return L
print(delList([1, 2, 2, 3, 3, 4]))#[1, 2, 3, 4]
Ⅳ python实现删除重复行并计数
Ⅵ python基础教程-集合的介绍和使用方法
前面几节我们有介绍了列表和元组的使用方法,本节专门针对 集合进行详细讲解。
0python基础教程-列表的增删改查
0python基础教程-“元组”的介绍
集合分为可变集合和不可变集合,(可变集合不可hash)
s={1,'a',(1,2,3),}print(s)
集合的添加
s.add('123')print s
注意添加完成后 添加的内容输出的位置 集合是无序的 所以我们添加进入后是在中间
集合的复制
a=s.()
这里需要做一下区别说明,同样的,我们可以使用a=s 得到出展示一样的复制效果,但是实际的生产环境中是有区别的,a=s.() 是将s集合独立复制一份出来放在内存中,而a=s 中的a调用到的还是s的内存。
集合的删除
我们可以使用可以使用s.clear()直接清除整个集合
还可以使用s.pop()删除最后一个值
删除指定集合中的元素
s.remove('a')