Python 课程学习笔记(5)列表 [ ] lst

本文介绍了Python列表的重要性,如何创建列表,以及各种操作,包括获取元素索引、切片操作、元素的添加、删除、修改、排序,还有列表生成式的基本用法。

第六章 列表 [ ] lst

 

45. 为什么需要列表

46. 列表对象的创建

47. 列表的特点

48. 获取指定元素的索引

49. 获取列表中指定的元素(单个元素)

50. 获取列表中多个元素—切片操作

51. 列表元素的判断及遍历

52. 列表元素的添加操作

53. 列表元素的删除操作

54. 列表元素的修改操作

55. 列表元素的排序操作

56. 列表生成式


45. 为什么需要列表

(1)变量可以存储有一个元素,而列表是一个“大容器”可以存储N多个元素,程序可以方便地对这些数据进行整体操作

(2)列表相当于其它语言中的数组

(3)列表示意图

46. 列表对象的创建

(1)列表需要使用中括号[],元素之间使用英文逗号进行分隔

(2)列表的创建方式:①使用中括号;②调用内置函数list()

(3)空列表: lst=[]  lst=list()

print('---------------------46.列表对象的创建------------------')
'''列表的创建方式:①使用中括号'''
lst=['hello','world',98,'hello']
'''②调用内置函数list()'''
lst2=list(['hello','world',98])

47. 列表的特点

(1)列表元素按顺序有序排序

(2)索引映射唯一个数据

(3)列表可以存储重复数据

(4)任意数据类型混存

(5)根据需要动态分配和回收内存

print('---------------------47.列表的特点------------------')
print(lst[0],lst[-3])

48. 获取指定元素的索引

index()

如查列表中存在N个相同元素,只返回相同元素中的第一个元素的索引

如果查询的元素在列表中不存在,则会抛出ValueError

还可以指定的start 和 stop 之间进行查找

print('---------------------48.获取指定元素的索引------------------')
print(lst.index('hello'))
#print(lst.index('a')) ValueError: 'a' is not in list
#print(lst.index('hello',1,3)) # 1-3 不包括 3 --ValueError: 'hello' is not in list
print(lst.index('hello',1,4))  # 1-4 不包括 4

49. 获取列表中指定的元素(单个元素)

获取单个元素

正向索引从0 到 N-1 ,e.g lst[0]

逆向索引从-N 到 -1 ,e.g lst[-N]

指定索引不存在,抛出 IndexError

print('-------------------49.获取列表中指定的元素------------------')
#获取索引为2的元素
print(lst[2])
print(lst[-3])

50. 获取列表中多个元素—切片操作

(1)语法格式 [start : stop : step ]

(2)切片的结果 —— 原列表的拷贝

(3)切片的范围—— [start,stop)  不包括stop

(4)step默认为 1 —— 简写  [start:stop]  [ start : stop]

(5)step为正数

① [: stop :step] — 切片的第一个元素默认为列表的第一个元素 — 从start 开始往后计算切片

②  [start : :step] —  切片的最后一个元素默认为列表的最后一个元素 — 从start 开始往后计算切片

(6)step 为负数

① [: stop :step] — 切片的第一个元素默认为列表的最后一个元素 — 从start 开始往前计算切片

②  [start : :step] —  切片的最后一个元素默认为列表的第一个元素 — 从start 开始往前计算切片

(7)step为负数,省略stop才能得到起点元素,填0是开区间

print('------------------50.获取列表中多个元素——切片操作------------------')
lst3=[10,20,30,40,50,60,70,80]
print(id(lst3))
#strat=1,stop=6,step=1
print(lst3[1:6:1])
print('原列表:',id(lst3))

lst4=lst3[1:6:1]
print('切的片段:',id(lst4))

print(lst3[::],id(lst3[::])) # 切出来为全部片段,但是id变了

51. 列表元素的判断及遍历

(1)判断指定元素在列表中是否存在

①元素 in 列表名

②元素 not in列表名

(2)列表元素的遍历

        For 迭代变量 in 列表名 :


print('------------------51.列表元素的判断及遍历------------------')
'''(1)判断指定元素在列表中是否存在'''
print(10 in lst3)
print(100 in lst3)
print(10 not in lst3)
print(100 not in lst3)
'''(2)列表元素的遍历'''
for item in lst3:
    print(item, end='\t')
print() # 换行

52. 列表元素的添加操作

增加操作

方法/其他

操作描述

append()

在列表末尾添加一个元素(一次只能添加一个元素)

extend()

在列表末尾至少添加一个元素

insert()

在列表的任意位置添加一个元素

切片

在列表的任意位置添加至少一个元素

à 本质是将原列表中切片出来的元素替换掉


print('------------------52.列表元素的添加操作------------------')
print('---append 在列表末尾添加一个元素---')
lst=[10,20,30]
print('添加元素之前',lst,id(lst))
lst.append(100)
print('添加元素之后',lst,id(lst)) #添加元素之后 id标识 未变
lis2=['hello','world']
lst.append(lis2)
print(lst)
print('---extend() 在列表末尾至少添加一个元素,每一个元素都单独添加进去---')
lst=[10,20,30]
lst.extend(lis2)
print(lst)
print('---insert 在列表的任意位置添加一个元素---')
lst=[10,20,30]
lst.insert(1,90)
print(lst)
#在任意位置上添加N多个元素
print('------切片操作------')
lst5=[True,False,'hello']
lst=['a','b','c','d','e']
lst[1:]=lst5  #切除替换
print(lst)
lst=['a','b','c','d','e']
lst[0:3:1]=lst5
print(lst)

53. 列表元素的删除操作

删除操作

方法/其他

操作描述

remove ()

一次删除一个元素

重复元素只删除第一个

元素不存在,显示 ValueError

 

pop ()

删除一个指定索引位置上的元素

指定索引不存在,显示IndexError

不指定索引,删除列表中最后一个元素

切片

一次至少删除一个元素

à 本质是将原列表中的切片出来的元素提取出来(切出来的列表)

à真正删除需要用空列表替换

clear()

请空列表

del

删除列表


print('------------------53.列表元素的删除操作------------------')
lst=[10,20,30,40,50,60,30]
print('--remove---')
lst.remove(30)   #一次删除一个元素,重复元素只删除第一个,元素不存在,显示 ValueError
print(lst)
print('---pop---')
lst.pop(0)      #删除一个指定索引位置上的元素.指定索引不存在,显示IndexError
print(lst)
lst.pop()       #不指定索引,删除列表中最后一个元素
print(lst)
print('---切片操作----')
lst=[10,20,30,40,50,60]
new_list=lst[1:3]
print('原列表',lst)
print('切片后:',new_list)  #  --> 本质是将原列表中的元素提取出来

'''不产生新的列表对象,而是删除原列表中的内容'''
lst=[10,20,30,40,50,60]
lst[1:3]=[]
print(lst)

'''请空列表'''
lst.clear()
print('请空后',lst)

'''删除列表对象'''
lst=[10,20,30,40,50,60]
del lst[2]
print(lst)
del lst  # --> 删除整个列表,列表不复存在,也没法输出。
# print(lst) -->NameError: name 'lst' is not defined

54. 列表元素的修改操作

(1)为指定索引的元素赋予一个新值        

(2)为指定的切片赋予一个新值

print('------------------54.列表元素的修改操作------------------')
lst=[10,20,30,40]
''''(1)为指定索引的元素赋予一个新值'''
#一次修改一个值
lst[2]=100
print(lst)
''''(2)为指定的切片赋予一个新值'''
lst[1:3]=[300,400,500,600]
print(lst)

55. 列表元素的排序操作

(1)常见的两种方式:

        ①调用 sort( )方式,列有中的所有元素默认按照从小到大的顺序进行排序(默认为“升序”),可以指定 reverse =True,进行降序排序。【对原列表操作】

        ②调用内置函数 sorted(),可以指定 reserver=True,进行降序排序,原列表不发生改变。【将产生一个新的列表对象】


print('------------------54.列表元素的排序操作------------------')
print('------调用 sort( )方式------')
lst=[20,40,10,98,54]
#开始排序,sort() --> 默认升序
print('排序前的列表',lst,id(lst))
lst.sort()
print('排序后的列表',lst,id(lst))

#通过指定关键字参数,将列表中的元素进行降序排序
lst.sort(reverse=True)
print(lst,id(lst))

lst.sort(reverse=False)
print(lst,id(lst))

lst=[20,40,10,98,54]
lst.reverse()  # 反转
print(lst)

56. 列表生成式

(1)列表生成式,简称“生成列表的公式”

(2)语法格式:[ i *i for i in range(1,10) ] 

(3)注意事项:“表达列表元素的表达式”通常包含自定义变量

print('-----------------57.列表生成式------------------')
lst=[i for i in range(1,10)]
lst2=[i*i for i in range(1,10)]
print(lst,lst2)

'''输出 2 4 6 8 10'''
lst3=[i*2 for i in range(1,6)]
print(lst3)

 

 

print('------调用内置函数 sorted()------')
lst=[20,40,10,98,54]
print('1',lst,id(lst))
new_list=sorted(lst)
print('1',new_list,id(new_list))

#指定关键字参数,将列表中的元素进行降序排序
sorted(lst,reverse=True)
print('3',lst)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值