python的序列类型包括列表,元组,字典,集合和字符串。序列是一种数据在内存中的储存方式,有点类似于C语言的数组。在内存中,序列占用一整块内存空间来储存一系列连续的数据或者引用。
目录
1,列表
列表的四种创建方式:
增加列表的元素:
删除列表的元素:
列表元素的查询和访问:
列表的切片:
列表的遍历,排序:
多维列表:
列表元素的修改:
max,min,sum函数:
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), '\n', list3)
#
# [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, '\t', 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)