python的序列类型包括列表,元组,字典,集合和字符串。序列是一种数据在内存中的储存方式,有点类似于C语言的数组。在内存中,序列占用一整块内存空间来储存一系列连续的数据或者引用。
列表里面可以存储任意类型的数据,不像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函数接受一个列表作为参数,求出列表中的最小值。
min函数接受一个列表作为参数,求出列表中所有数字类型的和。
li = [1, 2, 3, 4, 5] max = max(li) min = min(li) sum = sum(li) print(max, min, sum) # 5 1 15