python-2018-0816,笔记

本文深入讲解Python列表的各种操作方法,包括删除、添加、查找、排序等常见功能的使用技巧及注意事项,适合Python初学者和进阶者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 列表删除方法
语法:
del 列表对象

del 列表对象[索引] 注意:索引从0开始,支持负数
例如:
# 定义列表
x=[1,2,3,4]
#按索引删除指定位置的元素
#-1对应列表中的最后一个位置
del x[-1]  #返回[1,2,3]
#引用对象删除
del x
print(x)# 报错,name 'x' is not defined

注意:
del指定索引,存在越界现象
例:
xx=[1,2,3,4]
del xx[4] #报错 list assignment index out of range
del xx[-5] #报错 list assignment index out of range

注意:
python中当使用del删除引用对象,对象所引用的堆中对象形成垃圾,python中
使用标准库gc.collect()方法,手工回收垃圾;

2 列表常用方法
    
①list.append(obj)  添加 obj 对象到列表,返回None
例:
#range 返回range对象,表示一个范围
x=range(5)#0-4范围
#测试类型  type返回对象类型测试
print(type(x))
#列表实例化支持直接使用range对象
li=list(x)
print(type(li),li)
# list.append(obj)  添加 obj 对象到列表, 返回None
li.append("ok")
y=li.append([78,66.5])#将列表[78,66.5]作为一个元素添加到列表中
print(y)#[0, 1, 2, 3, 4, 'ok', [78, 66.5]]


② list.count(obj) 返回obj对象在列表中出现的次数
例:
x=range(5)#0-4范围
li=list(x)
li.append("ok")
y=li.append(3)
print(li)#[0, 1, 2, 3, 4, 'ok', 3]
#统计3 出现的次数
c=li.count(3)
print(c)#输出2

③ list.extend(seq) 添加seq的内容到列表中
例如:
# extend(可序列化对象)
li=[1,2,3]
b=li.extend([5,6,3])
li.extend("abc")
print(b,li)#None [1, 2, 3, 5, 6, 3, 'a', 'b', 'c']
    
    
④ list.index(obj) 返回列表中 obj 对象对应最低索引值,如果找不到则报错(n is not in list)
例如:
x=[3]
y=[1,7,5]
y.append(x)
print(y)#[1, 7, 5, [3]]
ind=y.index([3])
print(ind)#返回3

⑤ list.insert(index, obj) 插入 obj 对象到列表的 index 索引位置
例如:
x=list(range(3))
c=x.insert(0,3)
print(c,x)#None [3, 0, 1, 2]
x.insert(8,66)
x.insert(-8,44)#[44, 3, 0, 1, 2, 66]
#按下标查询元素,存在越界错误
print(x[5])#返回66

⑥list.pop(obj=list[-1]) 移除并返回列表中最后一个对象或 obj 对象
例如:
li=list("hero")
#从集合弹出最后个元素的值
# x=li.pop()
# # print(x,",",li)#2 , [0, 1]
# y=li.pop(索引位置)
y=li.pop(-5)
print(y,",",li)
y=li.pop(10)#越界错误
print(y,",",li)#pop index out of range

⑦ list.remove(obj) 从列表中移除 obj 对象,返回None
例如:
li=list("helloe")
c=li.remove("e")
print(c,",",li)#None , ['h', 'l', 'l', 'o', 'e']
注意:
如果删除的内容不存在,报错;

⑧ list.reverse() 倒转列表对象位置,返回None
例如:
li=list("helloe")
c=li.reverse()
print(c,",",li)#None , ['e', 'o', 'l', 'l', 'e', 'h']

⑨ list.sort([func]) 排序列表的对象,如果给定请使用func比较
#导入库
import random
li=list(range(10,20))
#shuffle使用乱序
random.shuffle(li)
#排序
# c=li.sort()
c=li.sort(reverse=True)
print(c,",",li)#None , [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

总结:(作业)
① insert,append,extend区别?
   
② pop,remove,del区别?

③ count,index区别?

④ reverse,sort区别?

⑤ 使用map和reduce计算1..10的阶乘,并统计和

3 这对列表的函数
① cmp(list1, list2) 比较两个列表中的元素
 python3中取消该函数
② len(list) 计算列表的长度

③ max(list) 从列表项中返回最大值

④ min(list) 从列表项中返回最小值

⑤ list(seq)转换一个元组为列表 ,返回转换后的列表对象
例如:
li=[8,12,65,3]
li2=[8,12,65,3]
print(id(li),",",id(li2))
print(li is li2)

#得到列表的元素个数
x=len(li)
print("元素个数:",x)
print("最大值:",max(li))
print("最小值:",min(li))
结果:
42533192 , 42536392
False
元素个数: 4
最大值: 65
最小值: 3

⑥ sum(可迭代对象)统计和
⑦ zip(可迭代对象A,可迭代对象B) 拉链操作
例如:
lia=list(range(1,3))
lib=list(range(4,8))
#求和
c=sum(lib)
print(c)
#拉链操作
c=zip(lia,lib)
print(type(c),",",c)
#zip对象c是可迭代,转换list对象
li=list(c)
print(li) #[(1, 4), (2, 5)]

cc=zip("abc","wyz")
#print(cc)#zip object at 0x000000000284D648
print(list(cc))#[('a', 'w'), ('b', 'y'), ('c', 'z')]

⑧ 枚举对象
例如:
li=list(range(3,6))
#列表转换枚举对象, 能够将单元素的集合按按索引与元素进行组合
me=enumerate(li)
print(list(me))#[(0, 3), (1, 4), (2, 5)]

4 map、reduce、filter函数
4.1 map函数
#map(函数或lambda,集合),作用将集合中每一个元素以参数的形式传递给第一个函数并返回计算后结果,形成新集合Map对象;
#lambda是关键字 ,后面的x表示参数,参数之间使用逗号分隔;冒号后的表达式计算后返回的结果
例如:
def xadd(a):
    return 2*a

定义列表
li=[1,2,3]
使用map拆分列表li的元素并计算返回一个map对象
m=map(xadd,li)
将map对象转换为列表对象
st=list(m)
结果:
[2,4,6]

lambda表达式,无函数名称的函数,目标简化代码,和map函数结合更紧密;
例如:
定义列表
li=[1,2,3]
m=map(lambda ca:3*ca,li)
例如:
单独引用lambda表达式
lam=lambda ca:3*ca
m=map(lam,li)

4.2 reduce
reduce函数将集合中元素从左到右依次累计操作
例如:
#[表达式 循环体] ----推导式
li=[random.randint(1,20) for i in range(3)]
def wc(x,y):
    return x*y
#reduce函数,集合中的值从左到右叠加处理
#python3中使用reduce之前需要导包
from functools import reduce
z=reduce(wc,li)
print(z)

4.3 filter函数
作用:
   通过将集合中每一个元素传递给第一个参数作为实参,如果函数计算后返回True,则将该元素
   存在filter对象中,否则舍弃该元素;
语法:
返回filter对象=filter(lambda表达式或函数,数据集)
注意:
函数和lambda表达式的参数个数是一个
例如: 得到100之内所有的素数;
li=list(range(2,101))
#判断该数是否是素数,如果该函数返回True,该数就是素数
def isnum(n):
    iflag=True
    for i in range(2,n):
        if(n%i==0):
            iflag=False
            break
    return iflag
#得到2-100的素数
y=filter(isnum,li)
#将filter对象转换成List
ylist=list(y)
print(ylist)

5 注意 sorted和sort区别?reverse和reversed区别?
 已知sort和convert在集合本事提供排序和反转的功能,列表对象本身提供sort和reverse方法;
 但是reversed和sorted是内置函数,经过反转和排序的原列表对象没有形成修改,这两个内置函数
 另个返回list_reverseiterator对象和排序的列表对象;
 
 例如:
 import random
#待排序列表
xli=list(random.randint(1,20) for i in range(1,6))
#调用sorted
# yli=sorted(xli)
# print(xli,yli)
#reversed的方法返回是list_reverseiterator对象
yli=reversed(xli)
print(xli,list(yli))#[3, 2, 15, 13, 2] [2, 13, 15, 2, 3]

6 列表推导式
基本语法:
[表达式A for 变量 in 可迭代的对象 [if表达式]]
该列表推导式,将每次循环中表达式A,通过if表达式的判断返回True之后(如果有if表达式),
将表达式A存储到列表中;
例如:
#执行原理首先执行当次for循环,将当次循环对应3*x(x的值来自循环本身),然后将3*x存储到列表中
xli=[3*x for x in range(6)]
#结果[0, 3, 6, 9, 12, 15]
print(xli)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值