python——删除列表、字典、⽂件和集合中元素
1.删除列表元素
有⼏种⽅法可以从列表中删除数据项。
1.1 pop⽅法
1.1.1 在不传递参数的情况下,默认删除最后⼀个。
data = [1,2,3,4,3,5,7]
print(data.pop()) #将会输出末位元素:7
print(data) #输出: 1,2,3,4,3,5
1.1.2 传递参数时,会以参数作为索引下表,删除索引的数值
data = [1,2,3,4,3,5,7]
print(data.pop(0)) #将会输出data[0]:1
print(data) #输出: [2,3,4,3,5,7]
1.2 使⽤内置函数del(data[i])
data = [1,2,3,4,3,5,7]
del(data[0]) #将删除data[0] = 1
print(data) #将输出:[2,3,4,3,5,7]
1.3 使⽤remove()⽅法
前⾯⼏种都是下标索引的⽅式删除数据,⽽remove()⽅法能够直接删除列表中所在数据。
data = [1,2,3,4,3,5,7]
print(data) # 输出:[1,2,4,3,5,7],只删除了第⼀个3
从这⾥可以看出,remove()⽅法只会顺序地到第⼀个符合条件的数据,并不会寻接下来是否还有满⾜条件的数据。所以,如果想要删除所有满⾜条件的数据,可以使⽤列表⽣成式。
1.4 使⽤列表⽣成式
data = [1,2,3,4,3,5,7]
data = [x for x in data if x!=3]
print(data) #输出[1,2,4,5,7]
1.5 使⽤列表的切⽚属性
如果删除⼀个列表中间⼀段数据,可使⽤列表的切⽚属性。
data = [1,2,3,4,3,5,7]
data = data[:1] +data[5:]
print(data) #输出[1,5,7]
2. 删除字典中的元素
2.1 使⽤pop()⽅法
这⾥与列表中的pop()⽅法略有不同,字典使⽤pop()⽅法必须要带参数(键值)
writelines在python中的用法data = {'a':1,'b':2,'c':3,'d':4}
data.pop('b') #将删除:键为'b'的元素
print(data) #输出:{'a': 1, 'c': 3, 'd': 4}
2.2 使⽤内置函数del()函数
这⾥与列表相同
data = {'a':1,'b':2,'c':3,'d':4}
del(data['a'])
print(data)#输出:{'b': 2, 'c': 3, 'd': 4}
2.3 使⽤clear()⽅法清空字典
data = {'a':1,'b':2,'c':3,'d':4}
data.clear()
print(data)#输出:{}
3. 删除⽂本⽂件中元素
假设我们有⼀个⽂件(图1),需要删除特定的⾏(若是需要删除特定⾏中特定元素,可在提取到⾏之后装换成列表加以删除)。
图1 ⼀段蛋⽩质序列
3.1 使⽤readlines()⽅法按⾏读取⽂件
使⽤readlines()⽅法读取⽂件的每⾏并返回存储的列表,再⽤列表的切⽚属性删除特定⾏。
#删除第⼆⾏和第四⾏
file = open('⼀段蛋⽩质序列.txt','r').readlines() #file是⼀个列表,元素是⽂件的⾏
open('','w').writelines(file[0:1]+file[2:3]+file[4:])
输出结果如图2所⽰:
图2 新的蛋⽩质序列
3.2 利⽤计数器跟踪⾏号,删除特定⾏
在⼤⽂件中,3.1的⽅法会使得⽣成的列表特别⼤,并且在删除多⾏的情况下显得繁琐。这⾥,将要删除的⾏号⽤列表进⾏存
储,removeIndex = [2,4]。
#删除第⼆⾏和第四⾏
file = open('⼀段蛋⽩质序列.txt','r') #打开需要读取的⽂件
outputFile = open('','w') #打开新的⽂件,若不存在,就会建⽴⼀个新的
removeIndex = [2,4] # 需要删除的⾏号
Index = 0 #计数器
for line in file:
Index = Index +1
if Index not in removeIndex: #若当前的⾏号不在要删除的特定⾏下,就写⼊⽂件
outputFile.write(line)
file.close()
outputFile.close()
输出如图2所⽰.
4 删除集合中的元素
python中的集合也满⾜数学上的定义:1.确定性;2.互异性;3.⽆序性。(具体定义请⾃⾏百度)
4.1 使⽤remove()⽅法删除集合中的某个元素。
data = set([1,2,3,4])#创建⼀个新的集合
print(data)#输出为{1, 2, 3}
但是,使⽤集合的场景往往不仅仅是对单个集合进⾏操作,⽽是⽐较集合间的元素差异性。所以,如果要⽐较数据之间的差异性,最好就是⽤数据结构——集合
4.2 使⽤交集的⽅法删除两个集合中不同时存在的元素
s1 = set([1,2,3,4])
s2 = set([2,4,6,8])
s3 = set.intersection(s1,s2)
print(s3) #输出{2, 4}
4.3 使⽤对称差的⽅法删除两个集合中同时存在的元素
s1 = set([1,2,3,4])
s2 = set([2,4,6,8])
s3 = set.symmetric_difference(s1,s2)
print(s3) #输出{1, 3, 6, 8}
4.4 使⽤reduce()函数对多个集合进⾏操作
4.4.1 reduce()函数的使⽤⽅法
from functools import reduce # python3中不再是内置函数
'''
函数原型为:reduce(function, iterable[, initializer])
function:为reduce函数对数据的操作⽅法
iterable:可迭代的对象,例如列表和元组
此函数会⾸先对迭代对象中第⼀个和第⼆个元素进⾏函数的操作,返回的结果再与第三个操作,以此类推'''
#eg1
'''
def add(x,y):
return x+y
data = reduce(add,[1,3,4,5,6])
print(data) #输出结果为19
'''
'''
#eg2 直接使⽤匿名函数lambda,进⾏操作
data = reduce(lambda x,y: x+y,[1,3,4,5,6]) #lambda后的x,y为形参,冒号后的具体操作⽅法,[...]为传⼊参数print(data) #输出结果为19
'''
4.4.2 对三个集合进⾏交集操作
具体操作为:function = set.intersection, 将多个集合装载在⼀个列表⾥
s1 = set(['a','b','c','d','e','f'])
s2 = set(['b','c','d','e','f','g'])
s3 = set(['c','d','e','f','g','h'])
s = [s1,s2,s3] #将多个集合合并成⼀个列表
common = reduce(set.intersection,s)
print(common)#输出为:{'e', 'f', 'd', 'c'}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论