一小时学会Python3爬虫基础(七)高级数据的全部操作:元组和集合

前言

基本常用三类高级数据用法,以及他们想配套的函数,全部讲解完毕!这回讲解的两种数据元组和集合,这两类数据类型虽然使用范围不大,但是在特殊情况下会用到,有一些程序猿喜欢用这两种数据做固定数据和去重,为了方便我们能够看懂别人代码,还是要学一下元组和集合。

元组

元组和列表区别在于不能直接更改数据,然后也拥有索引

num_tuple = [100,200,300]
print(num_tuple[0])

注意:如果定义的元组只有一个数据。如果缺少逗号结尾,那么这个数据元组在被检测类型的时候,都会指向元组内数据的类型

t2 = (10,)
print(type(t2)) #tuple

t3 = (20)
print(type(t3)) #int

t4 = ('hello')
print(type(t4)) #str

元组能存储各种数据,数据也可以重复,但是就是不能修改,如果要修改需要通过特殊方式,就是转类型为list 然后添加数据再转回去。

t5 = (30,)
t6 = list(t5)
t6.append(50)
t5 = tuple(t6)
print(t5)

1. 下标

tuple1 = ('aa','bb','cc','bb')
print(tuple1[0])

2. index()

寻找特定数据,返回下标,没找到则报错

tuple1 = ('aa','bb','cc','bb')
print(tuple1.index("aa",0,3))

3. count()

计算某个数据在元组中出现的次数

tuple1 = ('aa','bb','cc','bb')
print(tuple1.count("bb"))

4. len()

统计某个元组的数据个数,或者数据长度

tuple1 = ('aa','bb','cc','bb')
print(len(tuple1))

5. 特殊情况

元组中存在列表,可通过指定下标进行修改里面列表里的数据

tuple2 = (10,20,['aa','bb','cc'],50,30)
tuple2[2][0] = "dd"
print(tuple2)
print(tuple2[0])

集合

集合使用的是花括号,这里别跟字典混合在一起,字典没有key和value,它的数据可以是任意类型,唯一不同点就是没办法索引,不能重复数据。

1.创建集合

创建集合使用的{} 或者 set() , 但是如果要创建空集合只能使用set(),因为{}用来创建空字典。

创建空集合

s3 = set()
print(type(s3))  		 # set
s4 = {}
print(type(s4))          # dict

集合无序性

s1 = {10,20,30,40,50,60,70,80,90}
print(s1)   # {70, 40, 10, 80, 50, 20, 90, 60, 30} 数据会发生变动

注意:没有索引的缘故,所以集合的数据是无序性

字符串集合创建

s2 = set('adkbiemcfg')
print(s2)   # {'d', 'a', 'f', 'i', 'k', 'b', 'c', 'e', 'g', 'm'}

注意:用字符串创建集合的时候,这个添加方式类似 列表的 extend()函数的逐一拆分添加,这个要特别注意。

2.增加数据

  1. add() 增加数据
s1 = {10,20}
s1.add(100)
s1.add(10)
print(s1) # {100, 10, 20}

注意:因为集合有去重功能,所以当向集合追加的数据是当前集合已经有的数据,
则不进行任何操作,也就是不进行数据的增加。

  1. update()
s1 = {10,20}
s1.update([100,200])
print(s1)
s1.update('abc')
print(s1)
s1.update("100")
print(s1)

这里要注意updae()的添加方式,也是很像list中extend()

s1 = {10,20}
s1.update(100)  # int类型数据报错,报错

注意:追加的是数据的序列,序列指的是:str list tuple ,输入数据int float complex类型的数据会报错 。

3.删除数据

  1. remove()
    删除集合中的指定数据,如果数据不存在则报错。
s1 = {10,20}
s1.remove(10)
print(s1)

要删除的数据不存在集合中就会直接报错

s1 = {10,20}
s1.remove(10) # 报错
print(s1)
  1. discard()
    删除集合中指定的数据,如果数据不错在也不会报错
s1 = {10,20}
s1.discard(10)
print(s1)

跟remove的唯一区别就是删除了 不存在集合中的数据,也不会报错 直接返回的是原集合数据

s1 = {10,20}
s1.discard(30) # 不会报错
print(s1)
  1. pop()
    随机删除某个数据,并且返回这个被删除的数据
s1 = {10,20,30,40,50,60,70,80,90}
del_set = s1.pop()
print(del_set)

原因:集合是无索引,所以无序!pop在之前列表出现过,会删除最后一个,所以在没有索引指导下,集合pop是会进行水机删除一个数据行为。

4.查找数据

由于集合的无序性,没有办法使用index()、 count()这两个函数,所以没办法精确锁定数据存在,但是可以通过成员运算符in not in来确定数据是否存在集合内。

s1 = {10,20,30,40,50}
print(10 in s1)     # True
print(10 not in s1) # False

在这里插入图片描述

总结

到这里基本上把五种高级数据类型的操作说完了,本来还想说一下这一些数据的共同操作,不过看起来还是留在下节说可能会更加容易理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不世人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值