python列表用法大全_Python列表用法摘要,python,总结

python 列表用法总结

本文为python中最重要的数据类型列表的基础用法笔记。

列表理解

python 是基于值的的自动内存管理方式,每个变量、元素都指向内存地址,修改都是对内存地址操作,不是修改值 。记住这一点对理解python很重要 。

列表是内置可变序列,是包含若干元素的有序连续储存空间 。当增删列表时,会自动进行内存的扩展或者收缩,以保证元素之间没有空隙。内存的自动管理,大幅度减少了运行内存和程序员的内存管理负担,但是没有免费的午餐,列表的这个特点更容易引发意外的错误,使用时需注意。

列表的生成,直接把元素放在方括号内 [ ] ,元素可以是不同类型 。也可以借助 list() 将其他可迭代对象类型的数据转化为列表

a = [10, 20, 30]

>[10, 20, 30]

a = a = ['hellow', 1, (1,1), {'1':'a', '2':'b'}, {1,2},[1,2]] # 元素可以是各种类型变量

>['hellow', 1, (1, 1), {'1': 'a', '2': 'b'}, {1, 2}, [1, 2]]

>a = [] # 新建一个空列表

>a = list (range(10)) # list()将其他可迭代对象类型的数据转化为列表

>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

方法总结

方法

作用

list.append(x)

将元素x添加到列表尾部 ,原地增加

list.extend(L)

将列表L中的元素添加到尾部

list.insert(index, x)

在index位置处添加元素x

list.remove(x)

删除第一个出现的x

list.pop([index)]

删除并返回列表对象指定位置的元素,不指定删除最后一个

list.clear()

python用法 ,删除所有元素,保留列表对象

list.index(x)

返回元素x位置,没有报错

list.count(x)

返回x的频数

list.reverse()

对列表元素进行原地翻转

list.sort

原地排序

list.copy

浅复制

代码示例如下:

a = [1, 2, 3]

a.append('append加的元素') # 列表 + 运算也可以添加元素,但效率远低于append, python社区推荐使用append

>>>[1, 2, 3, 'append加的元素']

a.extend(['a', 'b', 'c'])

>>>[1, 2, 3, 'append加的元素', 'a', 'b', 'c']

a.insert(0, "刚insert的元素") # insert会改变之后位置指向的地址,效率较低,能不用尽量不用

>>>['刚insert的元素', 1, 2, 3, 'append加的元素', 'a', 'b', 'c']

a.remove(1) # 删除 第一出现的 1 # 删除中间的也会影响之后的指向地址

>>>['刚insert的元素', 2, 3, 'append加的元素', 'a', 'b', 'c']

b = a.pop() # 注意,pop 返会被删除的元素,而删除是原地操作,a被修改了

>>>a = ['刚insert的元素', 2, 3, 'append加的元素', 'a', 'b']

>>>b= 'c'

a.index(2) # 返回位置

>>>1

a.count(2) # 返回个数

>>>1

a.reverse() # 原地操作,不返回值

>>>['b', 'a', 'append加的元素', 3, 2, '刚insert的元素']

a = [1,3,2]; a.sort()

>>>[1, 2, 3]

b = a.copy () # 浅复制 ,只复制列表的元素的值,a 被修改不会修改b , 直接赋值是指向同一内存地址,比如下面区别

a = [1,2];b = a ;a[0]= 2

>>>b = [2, 2]

a = [1,2]; b = a.copy(); a[0]= 2

>>>b = [1, 2]

a.clear() # 清空列表

>>>a = []

切片

切片是python 最常用的最重要的操作之一,也适用于元组,字符串,range对象等。切片就是对列表进行切割分片,拿到我们需要的元素 。切片由两个冒号,三个数字完成,[start:end: step] 。start默认0, end默认列表长度,step默认1 。而且切片下标越界不会报错, 代码相当稳健 。

a = list(range(10))

>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

a[::] # 全切片

>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

a[::-2] # 步长为负, 表示从后向前切 ,步长为2

>>>[9, 7, 5, 3, 1]

a[1:-2:1] # start /end 为负,表示负索引, 从后向前数, -1即为倒数第一个 。

>>>[1, 2, 3, 4, 5, 6, 7]

列表推导式

列表推导式是彰显python灵活特性的方法之一,可以快速方便的生成满足特定要求的列表,而不借助循环 。

a = [ x**3 for x in range(4)]

>>>[0, 1, 8, 27]

b= [[1, 2],[3, 4]]; [i for j in b for i in j ] # j 遍历 b, 而 i 遍历 j

>>>[1, 2, 3, 4]

[i for i in [1,2] if i>0 and i< 2]# 条件限定

>>>[1]

[i+1 if i>0 else i-1 for i in [-1, 1, 2,3] ] # 选择

>>>[-2, 2, 3, 4]

[(i, j) for i in [1,2] for j in [3,4,5]] # 双循环

>>>[(1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5)]

总之,需要通过循环来生成的序列,python都可以通过列表推导式来生成了 ,控制选择多重循环都可以 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值