一、列表的创建和删除
列表:相当于数组,可以存储多个元素,程序可以方便的队这些数据进行操作。
创建:列表使用中括号 [] ,元素之间使用英文的逗号进行分隔
方式:中括号 + 使用内置函数 list()
lst1 = ['哈哈','nann',1314] # 0,1,2 -3,-2,-1
print(lst1)
print(lst1[0]) #哈哈
print(lst1[-1]) #1314lst2 = list(['哈哈','nann',1314])
print(lst2)
列表特点:
1、列表元素按顺序有序排序
2、索引映射唯一个数据
3、列表可以存储重复数据
4、任意数据类型混存
5、根据需要动态分配和回收内存
二、列表的查询操作
1、获取列表中指定元素的索引:index()
说明:1、若列表中存在 N 个相同的元素,只返回第一个元素的索引
2、若查询的元素不存在,就会抛出异常
3、可以在指定的 start 和 stop 之间进行查找
lst1 = ['哈哈','nann',1314,'even',99] # 0,1,2 -3,-2,-1
# 查找
print(lst1.index('nann'))
# print(lst1.index('py')) #不存在就报错
print(lst1.index(99,1,5)) #在区间 1,2,3,4(不包括5)里面查找 99 的索引
2、获取列表中的单个元素:用下标表示
lst1 = ['哈哈','nann',1314] # 0,1,2 -3,-2,-1
print(lst1)
print(lst1[0]) #哈哈
print(lst1[-1]) #1314
3、获取列表中的多个元素
基本语法:列表名[ start : stop :step]
切片结果:原列表片段的拷贝
注意:若step为正数,从start开始往后面计算切片;若step为负数,从start 开始往前面计算切片
lst3 = [22,34,54,57,61,89,44,11]
ls = lst3[0 : 4 : 1]
print(ls) # 不包括stop位置的数,是一个新的列表对象
print('原列表:',id(lst3))
print('切片:',id(ls))
'''
[22, 34, 54, 57]
原列表: 4374930112
切片: 4374965184
'''
4、判断元素在列表中是否存在
基本语法: 元素 in 列表名
元素 not in 列表名
通过 for 循环遍历整个列表: for item in 列表名
print( 2 in lst3)
for item in lst3:print(item)
三、列表的增、删、改
1、元素的增加:
- append():在列表的末尾添加一个元素
# 列表元素的增加
print("----列表元素的增加------")
lss = [21,33,10,654,23]
print(lss,id(lss)) #id标识相等,说明依然是原列表
lss.append(100)
lss.append("oo")
print(lss,id(lss))
'''
[21, 33, 10, 654, 23] 4376215360
[21, 33, 10, 654, 23, 100, 'oo'] 4376215360
'''
lss.append(lst1) #将lst1 作为一个元素添加到lss中去
print(lss,id(lss))
'''
[21, 33, 10, 654, 23, 100, 'oo', ['哈哈', 'nann', 1314, 'even', 99]] 4301733696
'''
- extend():在列表的末尾至少添加一个元素
lss = [21,33,10,654,23]
lss.extend(lst1)#向列表末尾一次添加多个元素
print(lss) #[21, 33, 10, 654, 23, 100, 'oo', '哈哈', 'nann', 1314, 'even', 99]
- insert():在列表的任意位置添加一个元素
lss1 = [2,11,31,4,6,90]
print(lss1)
lss1.insert(2,"x") #在索引为2 的位置上添加 X
print(lss1)
'''
[2, 11, 31, 4, 6, 90]
[2, 11, 'x', 31, 4, 6, 90]
'''
- 切片:在列表的任意位置添加至少一个元素
lss1 = [2,11,31,4,6,90]
print(lss1)
lss = ['hello','world']
lss1[2:] = lss # 把lss 的内容放到 lss1 索引的2 的位置,覆盖本身的内容
print(lss1)
'''
[2, 11, 31, 4, 6, 90]
[2, 11, 'hello', 'world']
'''
2、列表元素的删除
- remove():一次删除一个元素,元素不存在抛出异常
lss = [2, 11, 90, 2, 4, 6, 90]
print(lss)
lss.remove(11)
print(lss)
'''
[2, 11, 90, 2, 4, 6, 90]
[2, 90, 2, 4, 6, 90]
'''
- pop():删除指定索引位置上的元素,不指定位置,默认删除最后一个元素
lss.pop(0)
print(lss)
lss.pop() #不指定就删除最后一个元素
print(lss)
'''
[2, 90, 2, 4, 6, 90]
[90, 2, 4, 6, 90]
[90, 2, 4, 6]
'''
- 切片:一次至少删除至少一个元素
lss = [2, 11, 90, 2, 4, 6, 90]
print(lss)
lss[1:3] = [] #起始位置1,删除2个元素
print(lss)
'''
[2, 11, 90, 2, 4, 6, 90]
[2, 2, 4, 6, 90]
'''
- clear():清空列表
lss.clear()
print(lss)
'''
[]
'''
- del:删除列表
del lss
print(lss) # lss列表对象已经不存在,输出报错
3、列表的修改
- 为指定索引赋予一个新值
lss = [2, 11, 90, 2, 4, 6, 90]
print(lss)
lss[2] = 1
print(lss)
'''
[2, 11, 90, 2, 4, 6, 90]
[2, 11, 1, 2, 4, 6, 90]
'''
- 为指定的切片赋予一个新值
lss[1:3] = [300,400,500]
print(lss)
'''
[2, 11, 1, 2, 4, 6, 90]
[2, 300, 400, 500, 2, 4, 6, 90]
'''
四、列表的排序
排序方式:
- sort()函数:列中所有的元素默认按照从小到大排序,指定 reverse = true,进行降序升序
lss = [2, 11, 90, 2, 4, 6, 90]
print(id(lss))
lss.sort()
print(lss)
print(id(lss))
'''
4300692160
[2, 2, 4, 6, 11, 90, 90]
4300692160
'''
- 内置方法 sorted():指定 reverse = true,进行降序升序,原列表不发生变化
lss = [2, 11, 90, 2, 4, 6, 90]
ls0 = sorted(lss)
print(lss)
print(ls0)
'''
[2, 11, 90, 2, 4, 6, 90]
[2, 2, 4, 6, 11, 90, 90]
'''
五、列表的推导式
列表生成式:生成列表的公式
基本语句:i * i for i in range(1,10)
注意:表示列元素的表达式中通常包含自定义变量
print("-------列表生成式------")
listt = [i * i for i in range(1,10)]
print(listt) #[1, 4, 9, 16, 25, 36, 49, 64, 81]