zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【Python】高级变量类型

Python变量 类型 高级
2023-09-11 14:19:30 时间

目录

​列表(List)

​编辑列表定义与结构:

​编辑列表的操作:

​元组(Tuple)

 ​编辑元组的定义:

  ​编辑元组的操作:

 ​编辑元组与格式化字符串:

 ​编辑元组和列表的转换:

​字典(dictionary)

​编辑字典的定义:

 ​编辑字典的操作:

 ​字符串(string)

​编辑字符串的定义:

​编辑字符串的操作:

 ​公共方法:

公共函数:

公共运算符:

for else循环:


Python中的数据的类型比起C语言要更加丰富,Python中不仅有常用的整型、浮点型等常用的数字类的变量,它还包含有一些非数字类型的变量,如:列表、元组、字典和字符串,其中这些非数字类型的变量还类似于C++中的容器。

列表(List)

列表定义与结构:

列表就是一连串数据组成的集合体,它类似于C语言中的数组。但是C语言中的数组一般是不能再扩大的、C语言中的数组大小是指定的,并且C语言中的数组是只能存储一种类型的数据。即只能放1、2、3的话,就不能往里面放abc,但是Python中的列表就可以存放不同的数据类型:

 列表的定义方式也如上图:左边是列表名,右边是一个中括号括起来的数据组,里面的数据元素用逗号分隔。其中列表也是类似于数组的存储方式,都是一格一格地往后存储,我们需要某个数据时只需要像访问一个数组元素一样后面跟上中括号里面是元素序号即可。重点要记住列表下标是从0开始

列表的操作:

1、取索引操作: 

所谓的取索引操作就是你得知了一个数据后,你需要知道这个数组在这个列表中的位置,那么此时我们就需要使用到取索引操作,具体只需要将你的数据作为参数传进去,那么就会返回该数据的位置。注意,如果找不到的话,它会报错。

2、 修改元素:

修改元素就是将特定位置的元素重新赋值,那么我们只需要通过下标找到元素然后重新用等号赋值即可,这里要注意,如果越界了还是会报错。

 3、添加数据:

这里往列表中添加数据又三种方法:尾插、复制列表和中间某个位置插入数据。

先来说尾插,也就是在数据的末尾追加一个新的数据,这个操作对应的是列表里的append方法,我们只需要向它传递一个插入的元素即可;而中间插入就是利用insert的方法,它的使用与append类似,只不过多了一个插入位置的参数。而最后的复制一个列表追加到原列表末尾则是利用extend方法,参数是传递一个新的需要追加的列表。

4、删除数据:

在列表中,我们删除数据的方法有三种:popclearremove。这三个删除方法都有不同,首先是clear,clear表示清空当前的列表中的所有元素,也就是说执行了clear后列表里一个元素也没有。而remove表示清除某个特定的元素,它需要清除的元素就跟在它后面的括号内部作为参数。例如列表里有1,2,3,5,8;那么我们要删除5就需要输入remove(5)即可。这里要注意,如果这个列表中包含多个5,那么remove会默认删除第一个5。而pop与remove类似,只不过它的参数是那个元素的下标号,例如我们要删除5就传进去5的下标4,即pop(4)。注意了,如果我们不给pop传参数,那么它默认删除的是最后一个元素。或者我们还有一种删除方法就是使用del关键字,它类似C语言中的free,都是表示释放了后面变量的内存空间来删除。

5、统计与长度获取

如果我们想要得到列表中的元素个数(即列表长度)或者列表中某个元素的重复次数,那么我们需要使用len算法和count方法。

 6、列表的反转与排序:

列表的反转指的是将原来的一个列表的所有元素倒过来,这里我们实现用的是reverse方法,并且不需要传递参数。 

而列表的排序我们用的则是sort方法,它的参数我们暂时只需要理下面的第三个参数reverse,因为它决定了排序后是否会再次反转,默认情况下是从小到大。如果它为假,那么默认情况下执行的排序从小到大,如果它为真,那么我们的排序顺序是从大到小

 下面的图分别就是reverse是否为真时的排序情况:

 7、列表的遍历:

列表的遍历指的是重复访问这个列表来获得这个列表里的每一个元素,其中Python中也是利用迭代器(iteration)来进行操作的。其中迭代器类似于指针,我们可以利用迭代器去访问到每一个元素。而在Python中简化了方法,直接利用for循环和自己定义的一个变量去接收每一个元素的数据,从而不用直接和迭代器打交道。

元组(Tuple)

 元组的定义:

元组也是一个类似于容器的结构,它也可以用来存储数据,类似于列表,但是元组一般都是存储一些数据类型不同的数据。元组和列表不同,元组不支持增删改数据的功能,也就是说,元组一旦被确定就不能被后续修改了,这就类似于C语言中的常量数组(const);并且元组是以小括号的形式定义的,这也与列表有出入。

Tuple = (1,2,3)

其中有一种情况需要值得我们注意,那就是当元组里只有一个元素时,因为元组定义是使用的小括号,这也与我们算术运算是用小括号容易混淆,所有如果我们要定义的元组只有一个元素时,我们需要在那个元素后面加上一个逗号来告诉解释器这是一个元组。

  元组的操作:

元组的操作是列表操作的缩减版,因为元组一旦创建不能被修改的特性,所以元组中能够使用的方法也就只有统计元素个数的count和索引元素下标的index方法。

Tuple = (1,2,1,1,1,3)
Tuple.index(1) #0
Tuple.count(1) #4

 元组与格式化字符串:

对于我们之前多个变量输出时使用的格式化字符串,其实就使用到了元组的知识。

print("%s,%d"%("e",5))

例如上面的代码,其实后面百分号跟的括号就是一个元组,我们也可以利用一个内容相同的元组的元组名去替换它,所以元组在格式化字符串表示的输出中也有很大用处。

 元组和列表的转换:

元组和列表之间也可以进行互相转换,使用的是它们之间两个函数。元组转换为列表使用list函数,其中以元组名为参数,而列表转化为元组则使用tuple函数,以列表的名为参数。它们转换完后会返回一个内容为被转换对象而类型为要转换类型的返回值。注意,不是参数转换,而是返回一个和参数内容一样的目标类型的返回值

字典(dictionary)

字典的定义:

字典也是一种存储数据的高级变量,它有点类似于C++中的map容器。它的存储方式不是按照顺序来存储的,也就是说它的内存不是连续的一块空间,而是分散的。字典中的每个数据的类型都很特殊,每个数据都是由一个键值对组成,一个键和一个值。键我们可以理解为是数据的代号,值就是我们要保存的数值。键不可以重复,只能唯一指定,而值却可以重复。这就类似于我们的身份证号码和名字。

而字典的定义方式用的是大括号{},里面的每个数值都是由键和值组成的键值对,键和值之间由冒号隔开,每个键值对之间以逗号隔开,并且每个键值对最好只占用一行代码。

dic = {0:"a",
       1:"b",
       2:"c"}
Stu_Info = {"Name":"小明",
            "ID":3121000,
            "Age":19}

 字典的操作:

对于字典的操作我们可以先掌握几个比较常用的操作,字典的操作大部分都是以中括号直接进行修改的。首先来看增加元素,增加元素我们可以直接用中括号定义一个新的键值并且赋值即可,查找和修改元素也很类似,都是通过键找到元素和进行修改即可。

dic = {0:"a",
       1:"b",
       2:"c"}
dic[键]=要修改的值
dic[3]="d"
dic[0] # 就是a

删除操作就比较不同,删除操作使用的是我们在列表中使用过的pop方法,只需在pop里面放置需要删除的键,然后就可以删除掉对应的键值对。

其次就是字典的合并功能,所谓合并,就是指将另外一个字典与已知的字典进行合并,取并集,这里要注意,如果要合并的两个字典有相同的键,那么值内容会覆盖更新

最后字典的遍历也与列表的遍历类似,只不过字典每一次遍历得到的是键的值而已,所以我们可以将临时变量的值放入字典名后的中括号里来进行访问。

 字符串(string)

字符串的定义:

字符串就是一串字符的集合体,它也是一个高级的变量,一般的字符串都是指双引号括起的内容,即我们一般用双引号来定义字符串,但是有时如果字符串内部需要有双引号,那么此时我们需要用单引号来定义字符串。

字符串与其它的高级变量一样,都是可以通过下标的方式来访问到字符串里的每一个内容。

字符串的操作:

类似于我们前面的几个高级变量,字符串内部也有很多方法供我们操作。

 1、计数、索引和获取长度:

这里的获取长度我们用的不是内部的方法,而是函数len,使用方法也是直接传入字符串参数即可获取字符串长度。而索引与计数都是向对应的方法index和count中传入子串来获取子串的位置和出现次数。

string  = "hellohhlloe"
string.index(("ell"))
string.count("e")
len(string)

2、判断类操作:

Python中对于字符串有很多的判断类操作,以is开头的方法都是判断类的操作,在这里我们只列举几个比较常用的判断操作:isspace(判断是否为空字符串)、isascii(是否为ASCII码值(中文就不是))、isupper(字符是否为大写字母)、isdecimal(是否为数字)、isdigit(是否为数字(只不过它的数字还包括Unicode的数字符号))、isnumeric(是否为数字(它可判断比前面两个都要广,它还包括中文字符))、isalpha(是否为字母)、isalnum(是否为字母和数字的组合)

3、字符串对齐:

关于字符串的对齐操作,总结起来有三个:rjust、ljust和center,它们分别表示右对齐、左对齐和中间对齐,使用时直接传递进去要在多宽的范围内对齐的参数,例如要在10格空格范围内对中那么就传递10,因为它默认对齐符号是英文空格,要是我们想改也可以自己在后面再传递一个参数。

4、替换和查找:

关于替换和查找的方法常用的有四个:find、replace、startswith和endswith。其中startswith表示是否以指定的字符串开头,如果是,则返回True,endswith则恰恰相反,判断是否以指定的字符串为结尾。

find与index的功能类似,都是在字符串中查找指定参数的子串的位置,查找到则返回子串的位置。但是与index不同,如果find查找不到,则它会返回-1,不像index会报错。

替换字符串则是用replace方法,它的第一个参数是要被替换的字符串,第二个参数是要替换上去的字符串。这里要注意,replace是不会修改字符串的,它只会返回一个被修改的新字符串,对于原字符串它不会做任何改变。

5、删除空白字符:

 删除空白字符的操作是删除指定的字符串左右两边的空白字符,注意是空白字符不仅仅是空格,空白字符也包括\t、\n等符号,所以这个操作可以用来去除掉一些换行等操作。它也是一个返回操作后字符串的而不改变原字符串的方法!!

6、字符串拆分和连接:

字符串的拆分和连接操作分别是使用到方法splitjoin。其中split表示拆分字符串,它的作用是将一个字符串以某个指定的符号作为分隔符,将字符串拆分成一个小字符串列表。例如有字符串“ab cdef bag”。我们利用split方法以字符b为分隔符,那么将会拆分成一个包含“a”、“cdef”、“ag”三个子串的列表。如果我们不指定以什么符号位分割,那么将会以任意空白符为分割,例如“abc\n eeee\n\t awdadaw”会被拆分成:“abc”、“eeee”、“ awdadaw”。注意,分隔符不保留

 而字符串的连接则使用join方法,这个方法的参数需要是一个元素为字符串列表/元组之类的。然后它会以join前面的字符串为分隔符将子串合并成一个新的字符串。例如"b".join(某个元组),那么就会合并成以b为分割的字符串。

 7、字符串切片:

所谓的字符串切片就是将字符串按顺序挑出一些内容组成新的字符串,它与前面的split不同,split是拆分出一个字符串子串组成的列表,而字符串切片拿到的是一个新的字符串。切片的使用方法是在字符串后面跟上中括号string[N1:N2:Step],第一个N1表示第一刀下去的地方,N2表示结束的地方,Step则表示步长,第一刀后后跟上步长就可以实现按间隔来切片:

 公共方法:

 公共方法指的是能够适用于所有的高级变量的函数、运算符等操作。

公共函数:

公共函数是在不导入工具包的情况下就能够直接被使用的函数,常用的函数包括有len、del、max、min等函数。len函数表示获取当前变量的元素个数;而del可以表示删除指定的容器或容器内的某个元素;而max和min分别用来求出容器内的最大值和最小值,其中在字典里它只会比较键的大小。

公共运算符:

在Python中,对于高级的变量我们也重载了一些和这些变量相对应的运算符,例如+、*等常用的符号。以一个列表为例:列表1+列表2表示将两个列表合并,而列表1 * 整型数字n表示将此列表内的元素重复n次。注意,字典是不可以进行乘操作的,因为字典的键是唯一的;而且还要值得注意的是列表的extend和append操作与列表加号运算符的关系:列表的extend表示追加一个新的列表,而append表示的是追加一个新的元素,这也就表示即使给append传进去一个列表,它也会将这个列表当成自己的一个新元素。而与这两个操作是实质性的改变列表内容不同,加号操作符不会改变列表的内容,而是返回一个新的修改后的新列表。

而关于公共的运算符还有in和not in两个成员运算符,它们用来判断某个元素是否在特定的容器内,例如有一个列表List = [0,1,2,3,4,5,6],那么如果输入 5 in List 它就会返回真,否则返回假。 

for else循环:

对于我们以前用到的for循环来说for else在其基础上在结尾增加了一个条件else,这个条件可以帮助我们判断循环是否完全完成,即如果循环是从头到尾都完成了一遍,那么else就会执行,相反,如果循环在某次循环的中途遇到break而退出了,那么else就不会执行。

未完成循环
完成循环