python序列类型之列表


python的序列类型包括列表,元组,字典,集合和字符串。序列是一种数据在内存中的储存方式,有点类似于C语言的数组。在内存中,序列占用一整块内存空间来储存一系列连续的数据或者引用。

1,列表

列表里面可以存储任意类型的数据,不像C语言数组里只能存单一类型的数据。列表的符号为[],凡是被[]包起来的都称为一个列表对象。例如[整数3,整数2,浮点数1.2,列表[1,2,3],元组(1,2,3),函数func],则称之为列表对象,列表里面可以储存任意类型的数据。

列表中实际存的是每个数据的内存地址(每个数据也叫做对象,对象可以理解为一个内存块)。例如list = [1,2,3,func],实际存的是1,2,3,func的内存首地址。

列表的索引,一般是从左往右是0,1,2,3,4……这样排的;从右往左是-1,-2,-3,-4……这样排的。

列表的四种创建方式:

1,直接用[]把数据括起来,数据之间用英文逗号隔开。

list1 = [1, 2, 3]  # 列表list1中有三个元素
list2 = []  # 空列表,[]包起来就是列表

2,用list()函数创建

list()函数接受一个可迭代对象作为函数,返回一个列表。

iteration = range(1, 10, 1)  # iteration是一个range对象。
list3 = list(iteration)
print(type(list3), 
, list3)
# <class list> 
#  [1, 2, 3, 4, 5, 6, 7, 8, 9]

3,用range()创建整数列表

range函数有三个参数,range(开始点,结束点,跳步),range函数顾头不顾尾,取不到结束点的值。

list4 = list(range(1, 10, 2))
print(list4)
# [1, 3, 5, 7, 9]
list5 = list(range(1, 10, 1))
print(list5)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

4,列表推导式

list_1 = [x for x in range(10)]
print(list_1)
list_2 = [x ** 2 for x in range(10) if x % 2 == 0]
print(list_2)

由上面的代码,可以对列表推导式的语法格式进行仿照写自己的代码。

增加列表的元素:

1,使用列表对象的append()方法,这个函数在在原来列表的尾巴处增加一个元素。只能增加一个数据哦。

old_list = [1, 2, 3]
print(old_list)
old_list.append(新加的)
print(old_list)

2,使用列表对象的extend()方法,该方法接受一个列表作为参数,在原来列表的尾巴处添加上接受的列表。

old_list = [1, 2, 3]
print(old_list)
ext_list = [我是, 新加的]
old_list.extend(ext_list)
print(old_list)

3,使用列表对象的insert()方法,该方法使用如下,insert(index,value)。

list1 = [1, 2, 3, 4, 5]
list1.insert(1, -1)
print(list1)
# [1, -1, 2, 3, 4, 5]

4,使用运算符‘+’把两个列表拼接起来,这种方法会创造新的列表对象(也就是新开拓内存空间),不建议使用。

list1 = [我]
list2 = [爱]
list3 = [你]
list_all = list1 + list2 + list3
print(list_all)
# [我, 爱, 你]

5,使用运算符‘*’来把列表加倍形成新列表。

list1 = [666]
print(list1 * 3)
# [666, 666, 666]

其中,insert方法,‘+’,‘*’运算符都会生成新的列表对象,效率比较低。另外,如果操作的数据位于列表中间,进行的内存操作会比较多,效率比较低。建议使用extend方法拼接两个列表,使用append方法增添列表元素。

删除列表的元素:

1,del语句

2,列表对象的pop方法

3,列表对象的remove方法

4,清空列表用列表对象的clear方法

list1 = [1, 2, 3, 4, 5]
del list1[0]
print(list1)
# [2, 3, 4, 5]

list1 = [1, 2, 3, 4, 5]
re = list1.pop(0)  # 参数是index索引
print(list1, re)
# [2, 3, 4, 5] 1

list1 = [1, 2, 3, 4, 5]
re = list1.remove(1)  # 参数是值value
print(list1, re)
# [2, 3, 4, 5] None

list1 = [1, 2, 3, 4, 5]
re = list1.clear()
print(list1, re)
# [] None

其中,如果操作的数据位于列表中间,进行的内存操作会比较多,效率比较低。建议尽量使要删除的数据位于索引为-1的位置,使用pop方法删除。

列表元素的查询和访问:

1,使用索引进行访问

索引就是序列元素所处的位置,跟现实中的排队差不多,不过排队的第一个人的索引为0。索引放在[]里面,这是语法规定。

li = [1, 2, 3]
print(li[0])
print(li[1])
print(li[2])
print(li[-1])
print(li[-2])
print(li[-3])
# 1
# 2
# 3
# 3 ,索引-1就是最后一个元素3,-2就是导数第二个2,-3就是倒数第三个1,也就是第一个
# 2
# 1

2,列表对象的index方法用来获取某个元素的索引。

li = [1, 2, 3]
re = li.index(1)
print(re)
# 0

3,列表对象的count方法用来确定某个数据在列表中出现了多少次。

li = [1, 2, 3, 1, 1]
re = li.count(1)
print(re)
# 3

4,使用语句in和not in来判断列表中是否存在某个元素。

li = [1, 2, 3, 1, 1]
re = 1 in li
re1 = 1 not in li
print(re, 	, re1)
# True 	 False

列表的切片:

列表切片的语法格式如下:[start:end:step],也就是[开始点:结束点:跳步]

开始点不写的话默认为0。不写也叫做缺省。

结束点不写的话默认为-1。不写也叫做缺省。

一句话就是说,[:]就是代表整个列表,也就是[0:-1]。

step为正的话就是从左往右每隔几步取一个元素。

step为负的话就是从右往左每隔几步取一个元素。

切片也是顾头不顾尾,例如[1:6],这样是取不到索引6的数据的。

li = [1, 2, 3, 1, 1]
li_slice = li[:]
li_slice1 = li[0:-2]
li_slice2 = li[-5:-1]
li_slice3 = li[1:3]
li_slice4 = li[::-1]  # 倒序输出
li_slice5 = li[-1:-6:-1]
print(li_slice)
print(li_slice1)
print(li_slice2)
print(li_slice3)
print(li_slice4)
print(li_slice5)
# [1, 2, 3, 1, 1]
# [1, 2, 3]
# [1, 2, 3, 1]
# [2, 3]
# [1, 1, 3, 2, 1]
# [1, 1, 3, 2, 1]

列表的遍历,排序:

列表自身就是可迭代对象。可以用for循环来遍历列表。

li = [1, 2, 3, 4]
for data in li:
    print(data)
# 1
# 2
# 3
# 4

可以使用列表对象的sort方法来给自身排序。该方法有key和reverse两个默认参数,key指的是选择的排序方法,默认为None;reverse参数指的是要不要倒序输出。

li = [1, 2, 3, 4, 7, 5]
li.sort(key=None, reverse=False)
print(li)
# [1, 2, 3, 4, 5, 7]

也可以使用内置函数sorted来对列表排序,这里要把列表当做参数传给sorted函数,因为sorted函数需要接受一个可迭代对象作为参数。

li = [1, 2, 3, 4, 7, 5]
li_sort = sorted(li)
print(li_sort)
# [1, 2, 3, 4, 5, 7]

多维列表:

多维列表就是列表里面的元素还是列表,类似于C语言的二维数组。可以使用[][]两个下标来进行元素的访问。

multilist = [[1, 2, 3], [4, 5, 6]]
print(multilist[0])
print(multilist[0][0])
# [1, 2, 3]
# 1

多维列表实际就是里面的数据还是列表,外面的列表把里面的列表的内存首地址给存起来,再通过这些首地址去定位里面列表的元素。

列表元素的修改:

# 利用索引
lst = [1, 2, 3, 4]
lst[2] = 5
print(lst)
# 利用切片
lst[0:1] = [6, 6]
print(lst)
# [1, 2, 5, 4]
# [6, 6, 2, 5, 4]

max,min,sum函数:

max函数接受一个列表作为参数,求出列表中的最大值。

min函数接受一个列表作为参数,求出列表中的最小值。

min函数接受一个列表作为参数,求出列表中所有数字类型的和。

li = [1, 2, 3, 4, 5]
max = max(li)
min = min(li)
sum = sum(li)
print(max, min, sum)
# 5 1 15

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/290260.html

(0)
上一篇 2022年10月1日
下一篇 2022年10月1日

相关推荐

发表回复

登录后才能评论