Python3数据类型—列表

avatar 2020年2月12日18:26:54 评论 881 次浏览

变量

在没有说数据类型之前,先简单说一下变量。后面会对变量有补充,变量是什么,简单的说就是内存地址的名字。举个例子,wulaoer="吴老二",这就是一个变量,中文"吴老二"是存储在内存中的,没有办法可以直接找到"吴老二"这个词,只能通过变量"wulaoer"来去内存中查找,也可以理解为身份证,每个人的名字都不一样,但是要想找一个人,只需要通过身份证号就能找到哪个省的,哪个区的多大了,有没有结婚等等。不过查身份证需要的是有一个能够统一这些身份证的平台,系统中也有。系统中python查找内存地址是通过id()来查看变量的内存地址。不同变量的同一个值内存地址是不一样的,同一个变量不同的值,也是不一样的,不过根据执行顺序最后执行的会把前面执行的变量覆盖掉。

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
wulaoer = [1,2,3]
print(id(wulaoer))
wulaoer=[1,2,3]
print(id(wulaoer))

输出结果:

2211194278920  #第一次输出的结果
2211194278152  #第二次输出的结果

所有变量的内存地址是唯一的,不能重复。变量分为全局变量和局部变量,这个在后面函数的时候在说。现在只要理解变量就是查找内存地址的身份证就行了。

前言

python3的数据类型包括number(数字)string(字符串)Boolean(布尔值)None(空值)list(列表)tuple(元组)dict(字典)set(集合)等。针对不同的数据类型有不同的特性,不过他们都有一个公用函数len()可以返回数据类型的长度。我们下面一一诠释。针对每一个数据类型的增删改查等操作,一一举例。

列表(list)

列表是python3中最基本的数据类型,最基本的特征就是中括号"[]",中括号的值我们称之为元素,元素和元素之间使用逗号","隔开,元素的位置或者索引是从0开始,使用索引可以对列表进行增删改查等操作,也可以根据索引进行对列表切片,以上这些都会使用例子在下面一一诠释。举个例子:先申明一个列表,打印一下列表的元素个数,然后在把倒数第二之前的打印出来。

#!/usr/bin/python3
# coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
wulaoer = ["python", "ruby","golong","Django"]
print(len(wulaoer))
print(wulaoer[:-2])

输出结果:

4
['python', 'ruby']

len()是python的内置函数,返回对象的元素个数。对象可以是字符串,列表,元祖,字典等。分片是根据python的索引进行分片,从左的初始索引是0,从右的初始索引是-1,":"是段的符号,可以理解成":"的左右段,"[:-2]"就是从右到左,"[2:]"是从左到右,"[1:-2]"就是从左边第二个索引到右边数第二个索引的这段元素,自己动手试试。

列表的改

切片还可以进行修改列表的元素,给列表的某一个索引赋值即是修改。看下面的例子:

#!/usr/bin/python3
# coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
wulaoer = ["ruby","golong","python","java"]
wulaoer[2] = "python3"
print(wulaoer)

输出结果:

['ruby', 'golong', 'python3', 'java']

这是针对列表的修改,根据索引找到元素,然后重新赋值。所有的修改都是在原有的基础上进行的重新赋值,这点需要切记。

列表的增

增加列表的元素,python3提供了append(),insert()两个函数插入,两者的区别是一个从列表末尾插入,一个是从自定义位置插入。还有一个就是把整个列表的元素插入到另一个表中是用的extend()函数,下面针对这三个内置函数做一下例子:

#!/usr/bin/python3
# coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
wulaoer = ["ruby","golong","python","java"]
wulaoer.append("Ruby")          #末尾插入
print("使用append()函数插入:",wulaoer)
wulaoer.insert(2,"RUBY")        #指定位置插入
print("使用insert()函数在指定位置插入:",wulaoer)
wulaoer2 = wulaoer           #重新赋值给一个新的变量生成一个列表
wulaoer.extend(wulaoer2)      #新列表插入到旧列表中
print("使用extend()函数把wulaoer2的所有元素插入到列表wulaoer中:",wulaoer)

输出结果:

使用append()函数插入: ['ruby', 'golong', 'python', 'java', 'Ruby']
使用insert()函数在指定位置插入: ['ruby', 'golong', 'RUBY', 'python', 'java', 'Ruby']
使用extend()函数把wulaoer2的所有元素插入到列表wulaoer中: ['ruby', 'golong', 'RUBY', 'python', 'java', 'Ruby', 'ruby', 'golong', 'RUBY', 'python', 'java', 'Ruby']

以上就是列表的三种插入方法,因为还没有说运算符,如果说了运算符应该还有两种方式,一种是使用切片合并(wulaoer1[0:0]=wulaoer2,wulaoer1列表就会把wulaoer2的内容追加到自己列表中),一种是例如列表相加既然有插入了(wulaoer1+wulaoer2,wulaoer1的元素就包含wulaoer2的元素),至于这两种方式,后面运算符的时候单独在说。那就肯定有删除,下面看看列表的删除函数。

列表的删

删除列表的元素,可以根据列表的索引删除指定位置的元素,也可以使用内置函数删除整个列表。删除指定位置的元素使用的内置函数有remove(),pop(),两者的区别是remove()是根据的元素,只删除第一个相同的元素。pop()是根据索引删除元素这就是两者的区别。不过也可以使用del删除,使用del删除也是根据索引删除。还有一个内置函数clear(),clear()函数删除的是整个列表中的所有元素。下面举个例子,把这四个函数的用法做一下诠释。

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
wulaoer = ["ruby","python","golong","java","ruby"]
del wulaoer[0]     #使用del删除列表元素
print("使用del通过索引删除元素:",wulaoer)
wulaoer.pop(-2)    #使用pop()内置函数根据索引删除元素
print("使用pop通过索引删除元素:",wulaoer)
wulaoer.remove("golong")  #使用remove()内置函数根据元素删除列表中从左到右的第一个元素
print("使用remove函数通过元素删除:",wulaoer)
wulaoer.clear()
print("使用clear函数通过元素删除:",wulaoer)

输出结果:

使用del通过索引删除元素: ['python', 'golong', 'java', 'ruby']
使用pop通过索引删除元素: ['python', 'golong', 'ruby']
使用remove函数通过元素删除: ['python', 'ruby']
使用clear函数通过元素删除: None

列表的查

查看列表直接打印即可,前面说了切片也可以根据索引使用切片查看列表的元素。不过这里不使用这些,上面的例子都是字符串,如果给的列表中的元素都是整数,进行一个排序,这该如何操作,如何对列表中的元素去重,如何统计列表中的相同元素个数?我们先看一下python3给列表那些查看的内置函数,从小到大排序函数sort(),反转内置函数reverse(),统计相同元素在列表中的个数等。下面看个例子:

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
wulaoer = [6,8,2,9,3]
wulaoer.reverse()
print("使用内置函数reverse函数进行反转",wulaoer)
wulaoer.sort()
print("使用sort函数",wulaoer)

输出结果:

使用内置函数reverse函数进行反转 [3, 9, 2, 8, 6]
使用sort函数 [2, 3, 6, 8, 9]

使用切片查看列表,依靠的是索引,不但能够取到指定的索引元素也可以取到范围内的列表元素。这里针对列表的切片进行扩展一下,看下面的例子:

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
wulaoer = ["ruby","python","golong","java","ruby"]
wulaoer2 = wulaoer[1:4]
print("查看列表wulaoer的索引1至4的所有元素",wulaoer2)
wulaoer3 = wulaoer[3:]
print("查看列表wulaoer索引1之后的所有元素",wulaoer3)
wulaoer4= wulaoer[:-2]
print("查看列表wulaoer索引-2之前的所有元素",wulaoer4)

输出结果:

查看列表wulaoer的索引1至4的所有元素 ['python', 'golong', 'java']
查看列表wulaoer索引1之后的所有元素 ['java', 'ruby']
查看列表wulaoer索引-2之前的所有元素 ['ruby', 'python', 'golong']

以上就是列表的增删改查的操作,其实操作的方法不止这么多,因为有些知识点没有学到,后面学到的时候会单独举例。列表中有一个深拷贝和浅拷贝,不过涉及到其他的数据类型,我们先把数据类型过一遍,最后针对深浅拷贝做一个全面的诠释。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: