您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

python的5种数据结构,方法很多记不住吗?全在这里了.

时间:2021-02-24 16:16:45  来源:  作者:

序列是Python/ target=_blank class=infotextkey>Python中最基本的数据结构。所谓的序列,指的是可以连续存放多个值的内存空间,序列中的每个元素都会有一个数字,即它的位置或索引。通过这个索引就能找到序列中的元素 。

在python的序列中,包括列表,字符串,元组,集合和字典。序列支持几个通用的操作,就是可以索引、切片、相加、相乘、检查成员,需要注意的是,集合和字典不支持索引,切片、相加和相乘操作。

python的5种数据结构,方法很多记不住吗?全在这里了.

 

序列中的通用操作

  • 通过索引获取元素

就以列表为例,访问列表的元素可以通过下标(也叫索引),默认下标从0开始递增,也就是从左往右递增。当然也可以从右向左计数,这样的话最后一个元素就是从-1开始,依次类推。这也是序列中的一个特性 。

语法:
    seq[x]      #seq可以是列表,元组,字符串
实例:
    lst = ['red', 10, 12.3]
    print("第一个元素:",lst[0])  
    print("第三个元素:",lst[-1]) 
结果:
    #输出:red
    #输出12.3

以下是列表中通过下标访问元素的示意图。

  • 通过切片获取元素。

切片操作相当于是在列表中访问一定范围的元素,通过切片操作,其实相当于返回了一个新序列 ,这个序列是原来序列的子集。

语法:
    seq[start:end:step]
实例:
    lst5 = ['red','green','blue','black','gold','orange']
    print("获取第2-5个元素:",lst5[1:5])       #有start,end,没有step,默认为1
    print("获取第2,4,6个元素:",lst5[1:6:2])   #遵循左闭右开原则,不包括第7个元素
    print("获取第1,3,5个元素:",lst5[::2])     #步长为2
    print("获取第3个及后面的元素:",lst5[2:])
    print("将列表翻转:",lst5[::-1])
结果:
    获取第2-5个元素: ['green', 'blue', 'black', 'gold']
    获取第2,4,6个元素: ['green', 'black', 'orange']
    获取第1,3,5个元素: ['red', 'blue', 'gold']
    获取第3个及后面的元素: ['blue', 'black', 'gold', 'orange']
    将列表翻转: ['orange', 'gold', 'black', 'blue', 'green', 'red']
说明:
    start:表示切片的开始索引位置(包括该位置),也可以不指定,默认为0,也就是从序列的开头进行切片;
    end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为列表的长度,注意end不能超过列表的长度,否则会报错;
    step:表示切片的步长,如果 step 的值大于 1,则在进行切片操作时,会“跳跃式”的取元素。如果省略设置 step 的值,step的值就为1,则最后一个冒号就可以省略。
  • 序列进行相加,相乘

序列还支持序列的相加,相乘操作,以下就以两个两个列表的相加操作为例。

语法:
    seq = seq1 + seq2
实例:
    a_list = ['abc']
    b_list = ['xyz']
    c_list = a_list + b_list
    print("两个列表相加后产生的新列表:",c_list)
    print("列表a_list乘3后产生的新列表:",a_list*3)
结果:
    两个列表相加后产生的新列表: ['abc', 'xyz']
    两个列表相乘后产生的新列表: ['abc', 'abc', 'abc']
  • 检查序列中的元素

检查序列是否存在某个元素可以in关键字 ,同理也可以not in检查元素不在序列中,他们返回的结果是boolean值。

同样以列表为例

语法:
    元素 (not)in seq
实例
    lst8 = ['red', 'yellow', 'cream', 'blue', 'gunmetal']
    print("检查列表lst8中是否包含blue元素:",'blue' in lst8)
    print("检查列表lst8中是否不包含black元素:",'blac' not in lst8)
结果:
    检查列表lst8中是否包含blue元素: True
    检查列表lst8中是否不包含black元素: True
  • 序列的方法列表

序列除了以上的操作外,还支持如下的方法:

同样以list为例:

lst=['orange', 'gold', 'black']
python的5种数据结构,方法很多记不住吗?全在这里了.

 

字符串

字符串是python中最常见的一种数据类型,几乎只要开发程序,就离不开对字符串的处理 。字符串的定义非常简单,就是使用单引号或双引号引起来就可以了 。

  • 字符串格式化

使用%进行字符串格式化

前面学习的字符串,一旦声明,内容就不会变了。虽然也可以对字符串进行操作来改变字符串的值,但其实变为一个新的字符串了。那么有这样一种场景,声明的字符串中只有一部分会随着场景会发生变化 。比如说,我要定义个“you name is xxx”,那么这个xxx是根据询问的人的不同,给出的答案肯定也不会。那么这样的场景几乎就会用到字符串格式化。

print("your name is %s" % ('zhangan'))

可以看出,%后面的元组数据就是要传入的值,你可以传入张三,也可以是李四。字符串的%其实就是一个占位符,就是说我并不知道这里的字符是啥 ? 但是肯定的是这里有一个字符串 。故使用一个符号站住位置 。注意:%s就是代表后面的字符是字符串 。

除了%s的符号外,python字符串格式化符号还有很多,其中最常用的有格式化整数、格式化浮点数。

python的5种数据结构,方法很多记不住吗?全在这里了.

 

格式化操作辅助指令

格式化操作辅助指令主要是针对数字多样化的显示。先来看看主要的辅助指令有:

  • m.n : m是显示的最小总宽度,n是小数点后的保留位数
  • - : 用作左对齐
  • + :在正数前面显示加号(+)
  • <sp>: 在正数前显示空格
  • 0 : 显示的数字前面填充0而不是默认的空格
print("保留3位数字->'%.3f'" % 659)
print("返回的数字宽度是8位,小数后两位,默认右对齐->'%8.2f'" % 659)      #数字宽度8位,数字占了6位,剩余的两位被空格占用
print("返回的数字宽度是8位,小数后两位,设置左对齐->'%-8.2f'" % 659)
print("数字前显示+号->'%+8.2f'" % 659)
print("数字前显示-号->'%+8.2f'" % -659)
print("总宽度是8位,小数后两位,剩余空位用0补齐->'%08.2f'" % 659)

运行结果:

返回的数字宽度是8位,小数后两位,默认右对齐->'  659.00'
返回的数字宽度是8位,小数后两位,设置左对齐->'659.00  '
数字前显示+号->' +659.00'
数字前显示-号->' -659.00'
总宽度是8位,小数后两位,剩余空位用0补齐->'00659.00'
  • 使用format()方法进行字符串格式化

除了以上可以字符串格式化外,我们也可以通过format()方法进行字符串格式化,而且它增强了字符串格式化的功能 。

使用format进行格式化的格式: “{}”.format("传入的字符串") ,在前面的字符串中需用{}来进行占位,format()方法中是输入的实际字符串 。同一字符串中可以有多个占位符 。

format也提供了两种参数,分别是位置参数和关键字参数。

print("今天星期{},张三买了{}斤苹果".format('二',3))
print("我是位置参数:{0} {1}".format('hello','python'))
print("我是关键字参数:{x}".format(x='hello'))

运行结果:

今天星期二,张三买了3斤苹果
我是位置参数:hello python
我是关键字参数:hello

需要注意的是,位置参数和关键字参数可以结合起来使用,当它们结合起来使用时,位置参数必须放在关键字前面。

print("位置参数和关键字参数综合应用:{0} {x}".format('hello',x='python'))
#输出:位置参数和关键字参数综合应用:hellop ython
  • 字符串方法

以下为字符串的全部方法,可参考 。

python的5种数据结构,方法很多记不住吗?全在这里了.

 


python的5种数据结构,方法很多记不住吗?全在这里了.

 


python的5种数据结构,方法很多记不住吗?全在这里了.

 


python的5种数据结构,方法很多记不住吗?全在这里了.

 

列表

列表属于有序序列的一种,在列表中可以对元素进行增删改查等操作 。

创建列表有两种方式:分别是通过[]中添加元素和list()创建 。

通过[]创建时,列表中的每个元素需要通过逗号隔开。列表中的每个元素可以是整数、字符串、布尔值,空值、列表、元组等任意一种数据类型。

lst1 = ['red',10,12.3]
lst2 = ['blue', None,True,['a','b'],('abc',123)]
print(lst1)
print(lst2)

运行结果

['red', 10, 12.3]
['blue', None, True, ['a', 'b'], ('abc', 123)]

我们还可以通过list()方法创建列表,如下

lst3 = list()           #创建了一个空列表
lst4 = list(['green',10,12.3])
print(lst3)
print(lst4)

运行结果

[]
['green', 10, 12.3]
  • 列表支持的方法

列表中同样支持很多方法,也是我们最常用到的,具体如下:

lst=['orange', 'gold', 'black']
python的5种数据结构,方法很多记不住吗?全在这里了.

 


python的5种数据结构,方法很多记不住吗?全在这里了.

 

元组

元组是python的另外一种数据类型,和列表相比,它也是一个有序的集合。

元组和列表的差异

  • 相同点:列表和元组都是有序列表列表和元组的元素都是通过逗号隔开都支持存放不同数据类型的数据
  • 不同点定义不同,列表使用[],元组使用()列表是可变序列,元组是不可变列表 ;即列表中的元素可以进行增、删、改、查,而元组的元素一旦定义就不能进行修改,只能查询元素 。也正是由于这个特性,元组比列表更加更全,假如你定义的数据不希望被别人修改时,那么就可以定义为元组 。

定义元组后,就无法修改其中的元素,所以元组也没有提供对应的方法 。

字典

字典是一种无序的,可变的序列,它的每组元素都有键值对组成,中间用冒号分隔,如果有多组元素的话,元素与元素用逗号隔开 。

字典的语法格式如下:

d = {key1:value1,key2:value2}

字典类型的数据实际使用场景很广,其中最典型的json数据,里面的内容就是由键值对组成 ;或者通过抓包的HTTP请求,你会发现请求报文数据也是有键值对组成 。

python的5种数据结构,方法很多记不住吗?全在这里了.

 

字典里的键必须是唯一的,可以是字符串、数字等不可变数据组成 ,值可以是任何数据类型。

  • 字典支持的方法

字典中支持的常用方法如下:

d = {'zhangsan': 23,  'lisi': 35}

Set集合

集合(set)是一个无序的不重复元素的序列,集合中的元素都是一个唯一的,各不相同。

从语法格式上来看,set的创建和字典一样,都是将元素放在一对大括号{}内,相邻元素之间用逗号(,)分隔 。主要注意的是:创建一个空集合必须使用set()而不是{},因为{}是用来创建一个空字典。

  • 集合支持的方法

set集合中也支持很多方法,多数的功能和上面介绍的都差不多,以下为set方法列表 。

s1={'c++','JAVA','python',10}     
s2={'perl',12,'python'}
python的5种数据结构,方法很多记不住吗?全在这里了.

 

 



Tags:python   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1、让我们一起来看下吧,直接上图。 第一眼看到是不是觉得很高逼格,暗黑画风,这很大佬。其实它就是------AidLearning。一个运行在安卓平台的linux系统,而且还包含了许多非常强大...【详细内容】
2022-07-15  Tags: python  点击:(2)  评论:(0)  加入收藏
真正的大师,永远都怀着一颗学徒的心! 一、项目简介 今天说的这个软件是一款基于Python+vue的自动化运维、完全开源的云管理平台。二、实现功能 基于RBAC权限系统 录像回放 ...【详细内容】
2022-07-14  Tags: python  点击:(3)  评论:(0)  加入收藏
前言今天笔者想和大家来聊聊python接口自动化的MySQL数据连接,废话不多说咱们直接进入主题吧。 一、什么是 PyMySQL?PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,P...【详细内容】
2022-07-11  Tags: python  点击:(19)  评论:(0)  加入收藏
aiohttp什么是 aiohttp?一个异步的 HTTP 客户端\服务端框架,基于 asyncio 的异步模块。可用于实现异步爬虫,更快于 requests 的同步爬虫。安装pip install aiohttpaiohttp 和 r...【详细内容】
2022-07-11  Tags: python  点击:(15)  评论:(0)  加入收藏
今天我们学习下 Queue 的进阶用法。生产者消费者模型在并发编程中,比如爬虫,有的线程负责爬取数据,有的线程负责对爬取到的数据做处理(清洗、分类和入库)。假如他们是直接交互的,...【详细内容】
2022-07-06  Tags: python  点击:(34)  评论:(0)  加入收藏
继承:是面向对象编程最重要的特性之一,例如,我们每个人都从祖辈和父母那里继承了一些体貌特征,但每个人却又不同于父母,有自己独有的一些特性。在面向对象中被继承的类是父类或基...【详细内容】
2022-07-06  Tags: python  点击:(25)  评论:(0)  加入收藏
点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍。本文1553字,阅读约需4分钟 Hi,大家好,我是CoCo。在上一篇Python自动化测试系列文章:Python自动化测试之P...【详细内容】
2022-07-05  Tags: python  点击:(27)  评论:(0)  加入收藏
第一种方式:res = requests.get(url, params=data, headers = headers)第二种方式:res = requests.get(url, data=data, headers = headers)注意:1.url格式入参只支持第一种方...【详细内容】
2022-07-05  Tags: python  点击:(19)  评论:(0)  加入收藏
什么是python类的多态python的多态,可以为不同的类实例,或者说不同的数据处理方式,提供统一的接口。用比喻的方式理解python类的多态比如,同一个苹果(统一的接口)在孩子的眼里(类实...【详细内容】
2022-07-04  Tags: python  点击:(28)  评论:(0)  加入收藏
假设某日我开了一家空调公司,暂且就叫他天强空调安装设备公司吧,假装自己有公司,接了一单大生意,就是给甘肃省的各个高校安装空调(其实这边的气候基本用不到空调,就是假想一下),那么...【详细内容】
2022-07-01  Tags: python  点击:(33)  评论:(0)  加入收藏
▌简易百科推荐
近几年 Web3 被炒得火热,但是大部分人可能还不清楚什么是 Web3,今天就让w3cschool编程狮小师妹带你了解下 Web3 是什么?与我们熟知的 Web1 和 Web2 又有什么区别呢?web3.0什么是...【详细内容】
2022-07-15  编程狮W3Cschool    Tags:Web3.0   点击:(2)  评论:(0)  加入收藏
1、让我们一起来看下吧,直接上图。 第一眼看到是不是觉得很高逼格,暗黑画风,这很大佬。其实它就是------AidLearning。一个运行在安卓平台的linux系统,而且还包含了许多非常强大...【详细内容】
2022-07-15  IT智能化专栏    Tags:AidLearning   点击:(2)  评论:(0)  加入收藏
真正的大师,永远都怀着一颗学徒的心! 一、项目简介 今天说的这个软件是一款基于Python+vue的自动化运维、完全开源的云管理平台。二、实现功能 基于RBAC权限系统 录像回放 ...【详细内容】
2022-07-14  菜鸟程序猿    Tags:Python   点击:(3)  评论:(0)  加入收藏
前言今天笔者想和大家来聊聊python接口自动化的MySQL数据连接,废话不多说咱们直接进入主题吧。 一、什么是 PyMySQL?PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,P...【详细内容】
2022-07-11  测试架构师百里    Tags:python   点击:(19)  评论:(0)  加入收藏
aiohttp什么是 aiohttp?一个异步的 HTTP 客户端\服务端框架,基于 asyncio 的异步模块。可用于实现异步爬虫,更快于 requests 的同步爬虫。安装pip install aiohttpaiohttp 和 r...【详细内容】
2022-07-11  VT漫步    Tags:aiohttp   点击:(15)  评论:(0)  加入收藏
今天我们学习下 Queue 的进阶用法。生产者消费者模型在并发编程中,比如爬虫,有的线程负责爬取数据,有的线程负责对爬取到的数据做处理(清洗、分类和入库)。假如他们是直接交互的,...【详细内容】
2022-07-06  VT漫步    Tags:Python Queue   点击:(34)  评论:(0)  加入收藏
继承:是面向对象编程最重要的特性之一,例如,我们每个人都从祖辈和父母那里继承了一些体貌特征,但每个人却又不同于父母,有自己独有的一些特性。在面向对象中被继承的类是父类或基...【详细内容】
2022-07-06  至尊小狸子    Tags:python   点击:(25)  评论:(0)  加入收藏
点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍。本文1553字,阅读约需4分钟 Hi,大家好,我是CoCo。在上一篇Python自动化测试系列文章:Python自动化测试之P...【详细内容】
2022-07-05  CoCo的软件测试小栈    Tags:Python   点击:(27)  评论:(0)  加入收藏
第一种方式:res = requests.get(url, params=data, headers = headers)第二种方式:res = requests.get(url, data=data, headers = headers)注意:1.url格式入参只支持第一种方...【详细内容】
2022-07-05  独钓寒江雪之IT    Tags:Python request   点击:(19)  评论:(0)  加入收藏
什么是python类的多态python的多态,可以为不同的类实例,或者说不同的数据处理方式,提供统一的接口。用比喻的方式理解python类的多态比如,同一个苹果(统一的接口)在孩子的眼里(类实...【详细内容】
2022-07-04  写小说的程序员    Tags:python类   点击:(28)  评论:(0)  加入收藏
站内最新
站内热门
站内头条