首页 > 其他分享 >重要数据类型

重要数据类型

时间:2023-10-29 21:45:22浏览次数:28  
标签:bobo 重要 alist 元素 数据类型 列表 print 字典

重要数据类型

列表数据类型

  • 在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的一个数据结构。且列表是Python中最基本也是最常用的数据结构之一。

  • 什么是数据结构呢?

    • 有列表,,元组,字典,字符串等。
    • 通俗来讲,可以将数据结构当做是某种容器,该容器是用来装载或者存储数据的。不同的数据结构决定了对数据不同的组织方式。
    • 那么当数据被装载或者存储到了某个数据结构中后,那么就可以基于该数据结构的特性对数据进行不同形式的处理和运算。
  • 列表的创建方式

    • 创建一个列表,只要把逗号分隔的不同的数据元素使用方括号括起来即可。列表内的元素,可以是其它任意类型的数据,可多层嵌套列表,元素个数无限制。

    • 1 alist = [1,2,3,4,5]
      2 items = [1,'bobo',12.34]
      3 # 列表中可以存储任意类型的数据
  • 列表元素:

    • 存储在列表数据结构中的每一个数据被称为列表元素,简称元素。
  • 列表索引:

    • 列表中的每个元素都被分配一个数字作为索引,用来表示该元素在列表内所排在的位置。第一个元素的索引是0,第二个索引是1,依此类推。
  • 列表特性:

  • Python的列表是一个有序可重复的元素集合,可嵌套、迭代、修改、分片、追加、删除,成员判断。

  • 访问列表内的元素

    • 列表从0开始为它的每一个元素顺序创建下标索引,直到总长度减1。要访问它的某个元素,以方括号加下标值的方式即可。注意要确保索引不越界,一旦访问的 索引超过范围,会抛出异常。所以,一定要记得最后一个元素的索引是len(list)-1。

    • 1 alist = [1,12.3,'bobo']
      2 print(alist[2])  #'bobo'
      3 print(alist[0:2]) #[1, 12]
      4 print(alist[6]) #使用索引和切片的时候,不可以访问超出索引范围的元素
  • 修改元素的值

    • 直接对元素进行重新赋值

    • 1 alist = [1,12.3,'bobo']
      2 alist[1] = 100.123
      3 print(alist)
  • 删除元素

    • 使用del语句或者remove(),pop()方法删除指定的元素。

    • 1 alist = [1,12.3,'bobo']
      2 # del alist[0] #删除下标为0的列表元素
      3 # alist.remove('bobo') #删除列表中bobo这个列表元素
      4 # alist.pop() #默认情况下pop会把列表中最后一个元素删除
      5 alist.pop(2) #将列表中下标为2的元素进行删除
      6 print(alist)
  • 切片

    • 切片指的是对序列进行截取,选取序列中的某一段。

      • 切片的语法是: list[start:end]

      • 同字符串的切片机制一样

      • 以冒号分割索引,start代表起点索引,end代表结束点索引。省略start表示以0开始,省略end表示到列表的结尾。注意,区间是左闭右开的!也就是说[1:4]会截取列表的索引为1/2/3的3个元素,不会截取索引为4的元素。分片不会修改原有的列表,可以将结果保存到新的变量,因此切片也是一种安全操作,常被用来复制一个列表,例如newlist = lis[:]。

      • 切片过程中还可以设置步长,以第二个冒号分割,例如list[3:9:2],表示每隔多少距离取一个元素。

  • 列表的内置方法

    • 上文中我们说过,数据存储到不同的数据结构中,可以基于该数据结构的特性对数据进行指定形式的操作和处理。下图中的方法是列表专有的内置方法,请熟记于心。
    •  1 alist = ['bobo',"18","99.5",'北京']
       2 # 将列表转换成字符串
       3 ret = '-'.join(alist) #将列表中的每一个列表元素根据-为间隔进行拼接,返回字符串结果
       4 print(ret)
       5 
       6 # 如何将字符串转换成列表
       7 s = 'hello-name-bobo-age'
       8 ret = s.split('-')
       9 print(ret)
      10 
      11 alist = [3,8,5,7,6,2,1]
      12 alist.sort() #对列表元素进行排序
      13 print(alist)
      14 
      15 a = [1,2,3]
      16 a.append('bobo') #向列表尾部添加一个元素
      17 print(a)
      18 
      19 a1 = [1,2,3]
      20 a1.insert(1,999) #向列表下标为1的位置添加一个元素
      21 print(a1)

joinj()将列表类型转换为字符串类型

split()将字符串类型转换为列表类型

元组数据类型

  • 用方括号括起来的是列表,那么用圆括号括起来的就是元组。元组可以看作是不可变的列表。

  • 元组也是序列结构,但是是一种不可变序列,你可以简单的理解为内容不可变的列表。除了在内部元素不可修改的区别外,元组和列表的用法差不多。 

    • t = (1,2,3,4,5)
  • 元组与列表相同的操作:

    • 使用方括号加下标访问元素
    • 切片(形成新元组对象)
    • count()/index()
    • len()/max()/min()
  • 元组中不允许的操作,确切的说是元组没有的功能:

    • 修改、新增元素
    • 删除某个元素(但可以删除整个元组)
    • 所有会对元组内部元素发生修改动作的方法。例如,元组没有remove,append,pop等方法。
  • 提问:

    • 在学完列表后,在使用元素我们会发现元组由于是一个不可变序列,则很多操作会受到限制,这不能,那不能,要你何用,我直接用列表不行吗?

    • 还是有用的,有些数据一旦创建之后就不允许修改了,这些数据就适合用元组来创建,比如主机地址和端口(ip,port),("192.168.1.1", 80),两者捆绑在一起,不允许修改。

    • ip_port = ("192.168.1.1", 8080)

字典数据类型

  • 字典的实现机制:

  • Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。

  • 字典特性:

    • 字典包含的元素个数不限,值的类型可以是任何数据类型!但是字典的key必须是不可变的对象,例如整数、字符串、bytes和元组,最常见的还是将字符串作为key。列表、字典、集合等就不可以作为key。同时,同一个字典内的key必须是唯一的,但值则不必。
    • 注意:从Python3.6开始,字典是有序的!它将保持元素插入时的先后顺序!请务必清楚!
  • 创建字典

    • 字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,例如:
    • d = {key1 : value1, key2 : value2 }
    •  2 
       3 # 键值对:key : value
       4 # key:只能使用不可变类型的数据充当,通常使用字符串
       5 # value:任意数据类型的值充当
       6 # 字典中无法存储重复的键值对
       7 dict_1 = {'name':'bobo','age':18,'score':100,'age':18}
       8 # 注意:不要在字段中存储相同的key,value可以相同
       9 dict_2 = {'name':'bobo','age':18,'age':20}
      10 print(dict_2)
  • 访问字典

    • 虽然现在的字典在访问时有序了,但字典依然是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。但与list类似的地方是,字典采用把相应的键放入方括号内获取对应值的方式取值。

    •  1 d = {'name':'bobo','age':20,"scores":[100,120,99]}
       2 # 根据key访问对应的value值
       3 print(d['name'],d['scores']) #依次访问name和scores对应的value值
       4 print(d.get('name')) #通过get使用对应的key访问对应的value值
       5 
       6 # 注意:使用[]访问不存在的key对应的value值程序会报错
       7 # print(d['adress']) #程序报错
       8 
       9 # 注意:使用get访问不存在的key程序不会报错,但是会返回None这个空值
      10 print(d.get('address'))
  • 添加和修改

    • 增加就是往字典插入新的键值对,修改就是给原有的键赋予新的值。由于一个key只能对应一个值,所以,多次对一个key赋值,后面的值会把前面的值冲掉。
    • 1 d = {'name':'bobo','age':20,"scores":[100,120,99]}
      2 d['name'] = 'jay' #给存在的key修改对应的value值
      3 d['address'] = 'Beijing' #给一个不存在的key赋值表示新增键值对
      4 del d['age'] #删除age键值对
      5 print(d)

       

  • 删除字典元素、清空字典和删除字典

    • 使用del关键字删除字典元素或者字典本身,使用字典的clear()方法清空字典。
    •  1 d = {'name':'bobo','age':20,"scores":[100,120,99],'name':'bobo'}
       2 del d['name']
       3 print(d)
       4 
       5 d = {'name':'bobo','age':20,"scores":[100,120,99],'name':'bobo'}
       6 del d
       7 print(d)
       8 
       9 d = {'name':'bobo','age':20,"scores":[100,120,99],'name':'bobo'}
      10 d.clear()
      11 print(d)
  • 字典的重要方法
    • 1 d = {'name':'bobo','age':20,"scores":[100,120,99]}
      2 print(d.keys()) #返回字典中所有的key
      3 print(d.values()) #返回字典中所有的value
      4 print(d.items()) #返回字典中所有的键值对

set集合

  • 特性

    • set集合是一个无序不重复元素的容器,集合数据类型的核心在于自动去重。
  • 创建方式

    • 集合使用大括号{}框定元素,并以逗号进行分隔。但是注意:如果要创建一个空集合,必须用 set() 而不是 {} ,因为后者创建的是一个空字典。集合除了在形式上最外层用的也是花括号外,其它的和字典没有一毛钱关系。
    • 1 s = {1,2,3,'bobo',99.9,1,2,3}
      2 s = set()
      3 print(s)
  • 注意:

    • 集合既不支持下标索引也不支持字典那样的通过键获取值。
  • 作用

    • 集合数据类型属于Python内置的数据类型,但不被重视,在很多书籍中甚至都看不到一点介绍。其实,集合是一种非常有用的数据结构,它的去重和集合运算是其它内置类型都不具备的功能,在很多场合有着非常重要的作用,比如网络爬虫。
    • 我们都知道爬虫需要发散链接,一个页面连着另一个页面,不断爬取所有的超级链接,才能把整个站点爬取下来。然而在成千上万个页面链接中,有很大一部分可能是重复的链接或者循环互链,如果不对链接进行去重处理,那么爬虫要么陷入死循环内,要么就是出现错误。这个时候可以用集合的去重功能,保留一个曾经爬过页面的不重复的元素集合,每爬一个新链接,看看集合里是否曾经爬过,没有就开始爬,并将链接加入集合,爬过就忽略当前链接。在这里,用集合远比用列表或者字典要来得高效、节省得多。

标签:bobo,重要,alist,元素,数据类型,列表,print,字典
From: https://www.cnblogs.com/chang-jinrong/p/17796559.html

相关文章

  • 重要数据类型
    重要数据类型列表数据类型在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。列表就是这样的一个数据结构。且列表是Python中最基本也是最常用的数据结构之一。什么是数据结构呢?有列表,,元组,字典,字符串等。通俗来讲,可以将数据结构当做是某种容器,该容器......
  • python数据类型
    学习目标1、定义变量2、了解input输入3、熟悉列表list的功能与操作4、熟悉元组tuple的功能与操作5、熟悉集合set的功能与操作6、熟悉字典dict的功能与操作核心知识变量a='安全开发'print(a)print('====')a='安全测试'print(a)输出a=input('你是谁:')prin......
  • Modbus协议详解5:Modbus数据模型、寄存器、功能码 (非常重要)
    Modbus是应用层上的协议,还是一种主从的通信协议,通信过程按照一定的协议规则进行,数据的交互也是有固定的格式的。总的来说,Modbus是有着明确且固定的数据模型的,并且通信过程中的数据交互识别是要按照功能码进行的。接下来会介绍Modbus的数据模型、寄存器和功能码。1. Modbus的数据模......
  • js的对像及数据及数据类型的转换
    varcat={'color':'blank','name':'加菲猫','bland':'波斯猫','eat':function(){console.log('我能吃肉');},'drunk':functi......
  • BOSHIDA 散热问题在DC电源模块设计中的重要性和解决方法
    BOSHIDA散热问题在DC电源模块设计中的重要性和解决方法随着电子科技的快速发展,直流(DC)电源模块被广泛应用于各种电子设备和系统中。但是,由于工作时会产生热量,高功率元器件的散热问题一直是DC电源模块设计和制造中的一个重要问题。如果不解决散热问题,会导致系统的性能下降、寿命缩......
  • 理解Postgres的IOPS:为什么数据即使都在内存,IOPS也非常重要
    理解Postgres的IOPS:为什么数据即使都在内存,IOPS也非常重要磁盘IOPS(每秒输入/输出操作数)是衡量磁盘系统性能的关键指标。代表每秒可以执行的读写操作数量。对于严重依赖于磁盘访问的PG来说,了解和优化磁盘IOPS对实现最佳性能至关重要。本文讨论IOPS相关主题:IOPS是什么、如何影响PG、......
  • 踩坑日记,参数*位置是很重要的!!!
    踩坑日记,参数*位置是很重要的!!!classDome():def__init__(self):passdefverify(self,*args,name=None,**kwargs):print(name,args,kwargs)defverify2(self,name=None,*args,**kwargs):print(name,args,k......
  • 分布式操作系统的必要性及重要性
     总有人在各个平台留言或者私信问LAXCUS分布式操作系统的各种问题,尤其是关于分布式操作系统的应用市场、价值、意义之类的问题。我们团队做LAXCUS分布式操作系统,也不是头脑凭空发热,是基于我们之前的大量产品设计、经验逐渐一步步做起来。当今已经进入智能时代,也是算力时代,人工智......
  • python数据类型
    一、数值型python中数值型的主要类型有int(整数),float(浮点型),complex(复数型) 注意事项:一般情况下python的数据类型默认为字符串型(str)1.整型(int)整型就是数学里的整数,在python中用int来表示,我们在使用进制之间的转换时,常常会遇到整型,而整型支持四种形式的进制转换,如:十进制、二进制......
  • C++ 数据类型
    C++数据类型目录C++数据类型基本的内置类型类型修饰符基本数据类型void类型和指针型(*)typedef声明定义常量#define预处理器typedef和#define区别null参考资料基本的内置类型C++为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型。下表列出了七种基本的C++数......