Python列表

本文详细介绍了Python列表的创建、获取长度、取出元素、查询、切片、增加、删除、修改等操作,包括append、extend、insert、sort等功能,并探讨了列表在内存管理上的特点。此外,还涉及到了列表的排序、列表生成式以及多维列表的使用。
摘要由CSDN通过智能技术生成

列表

不同于C中数值只能存储同一数据类型的元素。Python中的列表可以同时存储str,int,float,bool多种类型

一大优点:自动根据需要动态分配和回收内存

其id不同于C中数组的地址只与首元有关,列表的id与 内部元素 及 操作 有关

list中存的指针数组的id,指针数组的每个指针才具体指向元素的id
指针数组的id

创建方式

list1=['asd',3,True]        	#直接创建
list2=list(['sss',9,False])		#通过函数list()创建

获取长度

len(list) 即可得到列表内元组的个数

取出方法

  • 可使用for-in语句取出
for i in list2:
    print(i,end='\t')
  • 可使用具体索引取出(类似数组)。不可超出范围:正:0 ~ N-1,逆:-N ~ -1。超出则报错

正序索引:0,1,2,3…

print(list2[1]) 		#  sss

逆序索引:-1,-2,-3…

print(list2[-1])		#False

查询操作

使用list.index()函数

  • 返回元素索引,多个元素返回第一个(正序)
  • 若找不到会报错:xx is not in list
  • 可以直接用print(list.index(9))输出,也可以用b=list.index('9') 然后 print(b)
    在这里插入图片描述
print(list2.index(9))
b=list2.index('sss')
print(b)

在这里插入图片描述

指定索引查找

list.index('hello',1,3)在list内查找‘hello’,索引范围是1,2(不包括3)

切片:获取列表某些片段

一旦使用切片,就创建了新的列表对象,id会发生变化

list[start:stop:step]
范围是:start ~ stop,不包含stop,但是不包括 stop

起始为start,若不设定起始,默认0开始

结束为stop,若不设定结束,默认最后一个结束

步长是step,若不设定步长,默认为1

在这里插入图片描述
例如:取列表索引为1~6的元素,步长为1

print(list2[1:6:1])
b=list2[1:6:2]			#也可以直接赋给某个对象,那个对象就是切出来的片段
print(b)
  • 注意:

step若取负值,起始和结束意义不变,只是切片方向变化:

print(list2)
print(list2[2::-1])

在这里插入图片描述
起始为2,即为列表中False的位置,未设置结束值,步长为-1,则逆序输出:False,9,sss

增加列表元素

直接加到表尾,id标识不变

给表尾增加单个元素

list.append()

id不发生变化

print(list2)
list2.append(100)
print(list2)

在这里插入图片描述
因为是增加一个元素,所以即使增加多个元素也会被当做一个整体的列表

print(list2)
list3=[123,456]
list2.append(list3)
print(list2)

在这里插入图片描述
其中[123,456]被当做一个元素了

给表尾增加多个元素

list.extend

print(list2)
list3=[123,456]
list2.extend(list3)
print(list2)

在这里插入图片描述
不同于append,extend函数给表尾增加独立的多个元素

任意位置添加元素

list.insert(positon,val)
在列表的position位置添加变量val,原位和之后的都往后移。

print(list2)
list2.insert(1,999)
print(list2)

增加在第1个索引,原来的9,False…都后移

在这里插入图片描述

将任意位置前后几个元素换掉

list[start:stop:step]=[1,2,3]

类似覆盖赋值

例如:将列表中索引 0~3 换为:1,2,3,4

print(list2)
list2[0:4:1]=[1,2,3,4]
print(list2)

在这里插入图片描述
当然,就像切片一样,还可以选择步长替换,逆序替换等

例如:索引0~5,每2个进行一次替换

print(list2)
list2[0:6:2]=['ww','mm','tt']
print(list2)

在这里插入图片描述

删除列表元素

在这里插入图片描述

移除一个元素

list.remove(val)
移除值为 val 的元素

若有多个值为val的元素,则只移除第一个

print(list2)
list2.remove(9)
print(list2)

在这里插入图片描述

删除指定索引的元素

list.pop(索引)

若不设定索引,会默认删除表尾元素
在这里插入图片描述

设定删除下标为2的

print(list2)
list2.pop(2)		
print(list2)

在这里插入图片描述

切下需要的部分

想删除索引2之后的所有元素

print(list2)
new_list=list2[0:3]		#new_list为list2的0~2
print(new_list)
print(list2)		

看似是删除后面,本质是把需要的切下来,赋给新对象,原有list2没有变化。

在这里插入图片描述

用空覆盖要删的元素

list.[1:3]=' '
本质是用“空”覆盖需要删的元素

print(list2)
list2[0:3]=''
print(list2)

在这里插入图片描述

删除整个列表

del list

删除列表list

修改列表元素

直接修改

list[2]=2

切片修改

list[1:3]=[100,200]

print(list2)
list2[1:3]=[100,200]
print(list2)

在这里插入图片描述
修改元素的个数超过初始到结束个数时,多出的部分会插入位置

print(list2)
list2[1:3]=[100,200,300,400]
print(list2)

在这里插入图片描述

排序列表

sort()方法

直接更改原有列表顺序

list.sort()默认是递增顺序排列

当reverse=1 or 0 时设定增序降序

list.sort(reverse=False) 0为递增排序

list.sort(reverse=True) 1为递减排序

内置函数sorted()方法

不更改原有列表顺序 ,直接新建立一个对象

默认升序:

list3=[1,3,5,7,9,2,4,6,8,10]
print(list3)
new_list=sorted(list3)
print(new_list)

在这里插入图片描述
加上reverse=True变成降序:

list3=[1,3,5,7,9,2,4,6,8,10]
print(list3)
new_list=sorted(list3,reverse=True)
print(new_list)

在这里插入图片描述

列表生成式

[i for i in range()]
本质是用for-in语句多次取值i , 列表元素的值为 i

print('--------生成列表-----------')
list=[i*2 for i in range(1,10,2)]
print(list)

此处的i*2,也就是对range出的列表:1,3,5,7,9进行乘2。
在这里插入图片描述

多维列表

声明时使用:w=[[1,2,3],[2,3,4],[3,4,5]]
即:用方括号嵌套两层构成二维列表

w=[[1,2,3],[2,3,4],[3,4,5]]
print(w[0])					#[1, 2, 3]
print(w[0][1])				#2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值