Python学习日记2------列表
变量可以存储一个元素,而列表是一个“大容器”,可以存储N多个元素,程序可以方便地对这些数据进行整体操作
列表相当于其它语言中的数组
1、列表的创建
列表需要使用中括号[],元素之间使用英文的逗号进行分割
创建方式有两种:
(1) 使用中括号
(2) 调用内置函数list()
2、列表的特点
(1) 列表元素按顺序有序排序
(2) 索引映射唯一数据0、1、2、3、4/-5、-4、-3、-2、-1
#创建列表对象,第一种
_lst1 = ['hello','python',123]
#创建列表对象,第二种
_lst2 = list(['hello','python',456])
print(_lst1[0],_lst1[-3])#hello hello
(3) 列表可以存储重复数据
(4) 任意数据类型混存
(5) 根据需要动态分配和回收内存
3、列表的查询
(1) 获取列表中指定元素的索引
index():如果列表中存在几个相同元素,只返回相同元素中第一个元素的索引
如果查询的元素在列表中不存在,则抛出ValueError
还可以在指定的start和stop之间进行查找
lst=['hello','python',123,'python']
print(lst.index('python'))#1
#print(lst.index('hhh'))#抛出异常ValueError: 'hhh' is not in list
#ValueError: 'hello' is not in list
#print(lst.index('hello',1,3))#从索引为1的位置查找到索引为3的位置,但是不包括3
print(lst.index('hello',0,2))#0
(2) 获取列表中的单个元素
正向索引 0到N-1
逆向索引 -N到-1
指定索引不存在,抛出IndexError
_lst = ['ni','hao','ysjx',1994]
#获取索引为2的元素
print(_lst[2])#ysjx
#获取索引为-3的元素
print(_lst[-3])#hao
#获取索引为6的元素
print(_lst[6])#IndexError: list index out of range
(3) 列表的查询操作
获取列表中的多个元素
语法格式:
列表名[start:stop:step]
其中step默认为1
切片的结果:原列表的片段的拷贝
_lst = [123,456,789,0,234,567]
print('原列表:',id(_lst))#原列表: 2714824888840
_lst2=_lst[0:5:1]
print('切的片段:',id(_lst2))#切的片段: 2714824889352
切片的范围:
_lst = [123,456,789,0,234,567,666]
#省略步长
print(_lst[1:3])#[456, 789]
print(_lst[1:3:])#[456, 789]
#start=1,stop=6,step=2
print(_lst[1:6:2])#[456, 0, 567]
#stop=6,step=2,start采用默认(从0开始)
print(_lst[:6:2])#[123, 789, 234]
#start=1,step=2,stop采用默认(最后一个)
print(_lst[1::2])#[456, 0, 567]
step步长为负数的情况(逆序)
print('原列表:',_lst)#原列表: [123, 456, 789, 0, 234, 567, 666]
print(_lst[::-1])#逆序输出[666, 567, 234, 0, 789, 456, 123]
#start=6,stop省略,step=-1
print(_lst[6::-1])#[666, 567, 234, 0, 789, 456, 123]
#start=6,stop=0,step=-2
print(_lst[6:0:-2])#[666, 234, 789]
(4) 列表元素的查询操作
判断指定元素在列表中是否存在
元素 in 列表名
元素 not in 列表名
列表元素的遍历
for 迭代变量 in 列表名:
操作
4、列表元素的增加操作
append()在列表的末尾添加一个元素(常用)
extend()在列表的末尾至少添加一个元素
insert()在列表的任意位置添加一个元素
切片 在列表的任意位置添加至少一个元素
_lst = [111,222]
_lst.append(333)
print(_lst)#[111, 222, 333]
_lst2 = ['hello','yuzu']
#_lst.append(_lst2)#将_lst2作为一个元素添加到_lst的末尾
#print(_lst)#[111, 222, 333, ['hello', 'yuzu']]
_lst.extend(_lst2)#拓展,将_lst2的所有元素单个添加到_lst的末尾
print(_lst)#[111, 222, 333, 'hello', 'yuzu']
#在任意位置上添加一个元素
_lst.insert(1,'lll')
print(_lst)#[111, 'lll', 222, 333, 'hello', 'yuzu']
#在任意位置上添加N多个元素
_lst3 = [True,True,'www']
_lst[1:] = _lst3
print(_lst)#[111, True, True, 'www]
5、列表元素的删除操作
remove():
一次删除一个元素
重复元素只删除第一个
元素不存在抛出ValueError
pop():
删除一个指定索引位置上的元素
指定索引不存在,抛出IndexError
不指定索引,删除列表中最后一个元素
切片:一次至少删除一个元素
clear():清空列表
del:删除列表
_lst = [10,20,30,10,30,40,60,20]
_lst.remove(30)
print(_lst)#[10, 20, 10, 30, 40, 60, 20]
#_lst.remove(70)#ValueError: list.remove(x): x not in list
#根据索引移除元素
_lst.pop(2)
print(_lst)#[10, 20, 30, 40, 60, 20]
#_lst.pop(11)
#print(_lst)#IndexError: pop index out of range
_lst.pop()
#不指定参数(索引),将删除列表最后一个元素,remove()必须指定
print(_lst)#[10, 20, 30, 40, 60]
#_newList = _lst[1:4]
#产生了一个新列表
print('原列表:',_lst)#原列表: [10, 20, 30, 40, 60]
#print('切片后的列表:',_newList)#切片后的列表: [20, 30, 40]
#不产生新的列表对象,而是删除原列表的内容
#用空列表
_lst[1:4] = []
print(_lst)#[10, 60]
_lst.clear()
print(_lst)#[]
#del将列表对象删除
del _lst
#print(_lst)
6、列表元素的修改操作
为指定索引的元素赋予一个新值
为指定的切片赋予一个新值
_lst = [10,20,30]
_lst[2] = 300
print(_lst)#[10, 20, 300]
_lst[1:2] = [400,500,600,700]
print(_lst)#[10, 400, 500, 600, 700, 300]
7、列表的排序操作
调用sort()方法,列中所有元素默认按照从小到大的顺序排序,可指定reverse=True进行降序排序
调用内置函数sorted(),可以指定reverse = True,进行降序排序,原列表不发生改变
注:
sort()是对于原列表进行排序
sorted()是对新的列表对象进行排序
8、列表生成式:生成列表的公式
语法格式:
ii for i in range(1,10)
ii 表示列表元素的表达式
i 自定义的变量
range()可迭代对象
_lst1 = [i*i for i in range(1,9)]
print(_lst1)#[1, 4, 9, 16, 25, 36, 49, 64]
_lst2 = [i*3 for i in range(1,5)]
print(_lst2)#[3, 6, 9, 12]