Python学习日记2------列表

本文详细介绍了Python中的列表,包括如何创建列表、列表的特点、元素的查询、增加、删除和修改操作,以及排序方法。通过实例展示了列表切片、索引操作、元素的增删改查,并探讨了列表生成式。是Python初学者掌握列表操作的重要参考资料。
摘要由CSDN通过智能技术生成

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)
i
i 表示列表元素的表达式
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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值