辛丑年丙申月乙巳日|序列

列表

列表里存储的是对象的地址,保证了列表是轻量级,节约内存空间。

方法要点描述
list.append(x)增加元素将元素 x 增加到列表 list 尾部
list.extend(aList)增加元素将列表 alist 所有元素加到列表 list 尾部
list.insert(index,x)增加元素在列表 list 指定位置 index 处插入元素 x
list.remove(x)删除元素在列表 list 中删除首次出现的指定元素 x
list.pop([index])删除元素删除并返回列表 list 指定为止 index 处的元素,默认是最后一个元素
list.clear()删除所有元素删除列表所有元素,并不是删除列表对象
list.index(x)访问元素返回第一个 x 的索引位置,若不存在 x 元素抛出异常
list.count(x)计数返回指定元素 x 在列表 list 中出现的次数
len(list)列表长度返回列表中包含元素的个数
list.reverse()翻转列表所有元素原地翻转
list.sort()排序所有元素原地排序
list.copy()浅拷贝返回列表对象的浅拷贝

Python 的列表大小可变,根据需要随时增加或缩小

列表的创建

基本语法[]创建

>>>a=[10,20,'sys']
>>>a=[]#创建一个空列表对象

list()创建

>>>a=list()#创建一个空的列表对象
>>>a=list(range(10))
#range(10)是一个可迭代的range对象
#list经常把可迭代的数据转成列表
>>>a
[0,1,2,3,4,5,6,7,8,9]
>>>a=list("Laiiike,yu")
>>>a
['L','a','i','i','i','k','e',',','y','u']

range()创建整数列表

range([start,]end[,step])
中括号内不写的话start默认为0,step默认为1,end必写。

推导式生成列表

>>> a = [x*2 for x in range(100) if x%9==0] 
#通过 if 过滤元素
>>> a
[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]

列表的增加

append()

列表尾部添加新的元素,推荐选用。

>>> a = [20,40]
>>> a.append(80)
>>> a
[20, 40, 80]

+运算符

并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次
复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。

>>> a = [20,40]
>>> id(a)
46016072
>>> a = a+[50]
>>> id(a)
46015432

extend()

将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。

>>> a = [20,40]
>>> id(a)
46016072
>>> a.extend([50,60])
>>> id(a)
46016072

insert()插入元素

插入列表指定位置,并对该位置后面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。
类似的有remove(),pop(),del(),他们删除非尾部元素是也会发生操作位置后面元素的移动。

>>> a = [10,20,30]
>>> a.insert(2,100)
>>> a
[10, 20, 100, 30]

乘法扩展

>>> a = ['sxt',100]
>>> b = a*3
>>> a
['sxt', 100]
>>> b
['sxt', 100, 'sxt', 100, 'sxt', 100]

列表元素的删除

实际上也是元素的拷贝。

del 删除

删除列表指定位置的元素
指定位置后边的元素依次拷贝到前面。

>>> a = [100,200,888,300,400]
>>> del a[1]
>>> a
[100,200,300,400]

pop()方法

pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。相当于弹夹,将最后一个元素弹出,直到列表里的元素为空。

>>> a = [10,20,30,40,50]
>>> a.pop()
50#弹出的元素
>>> a
[10, 20, 30, 40]
>>> a.pop(1)
20#弹出的元素
>>> a
[10, 30, 40]

remove()

删除首次出现的指定元素,若不存在该元素抛出异常。
括号里放的是元素是值而不是索引。

>>> a = [10,20,30,40,50,20,30,20,30]
>>> a.remove(20)
>>> a
[10, 30, 40, 50, 20, 30, 20, 30]
>>> a.remove(100)
Traceback (most recent call last):
	File "<pyshell#208>", line 1, in <module>
		a.remove(100)
ValueError: list.remove(x): x not in list

列表元素访问和计数

通过索引直接访问元素

[0, 列表长度-1],超过这个范围则会抛出异常。

>>> a = [10,20,30,40,50,20,30,20,30]
>>> a[2]
30

index()获得指定元素在列表中首次出现的索引。

index(value,[start,[end]])

>>> a = [10,20,30,40,50,20,30,20,30]
>>> a.index(20)
1
>>> a.index(20,3) #从索引位置 3 开始往后搜索的第一个 20
5
>>> a.index(30,5,7) #从索引位置 5 到 7 这个区间,第一次出现 30 元素的位置
6

count()获得指定元素在列表中出现的次数

count()可以返回指定元素在列表中出现的次数。

>>> a = [10,20,30,40,50,20,30,20,30]
>>> a.count(20)
3

len()返回列表长度

len()返回列表长度,即列表中包含元素的个数。

>>> a = [10,20,30]
>>> len(a)
3

成员资格的判断

in/not in
在为True,不在为False。
(也可以用count()>0判断)

切片操作

[起始偏移量 start:终止偏移量 end[:步长 step]]
包头不包尾
三个量是正数

操作和说明示例结果
[:] 提取整个列表[10,20,30][:][10,20,30]
[start:]从 start 索引开始到结尾[10,20,30][1:][20,30]
[:end]从头开始知道 end-1[10,20,30][:2][10,20]
[start:end]从 start 到 end-1[10,20,30,40][1:3][20,30]
[start:end:step] 从 start 提取到 end-1,步长是 step[10,20,30,40,50,60,70][1:6:2][20, 40,60]

三个量是负数

示例说明结果
[10,20,30,40,50,60,70][-3:]倒数三个[50,60,70]
10,20,30,40,50,60,70][-5:-3]倒数第五个到倒数第三个(包头不包尾)[30,40]
[10,20,30,40,50,60,70][::-1]步长为负,从右到左
反向提取
[70, 60, 50, 40, 30, 20,10]

列表的遍历

for obj in listObj:
	print(obj)

复制列表所有的元素到新列表对象

list1 = [30,40,50]
list2 = list1
#将list2指向列表对象,列表对象本身元素并没有复制
list1 = [30,40,50]
list2 = []
#实现复制操作

列表排序

修改原列表,不建新列表

>>> a = [20,10,30,40]
>>> a.sort() #默认是升序排列
>>> a
[10, 20, 30, 40]
>>> a = [10,20,30,40]
>>> a.sort(reverse=True) #降序排列
>>> a
[40, 30, 20, 10]
>>> import random
>>> random.shuffle(a) #随机打乱顺序
>>> a
[20, 40, 30,10]

建新列表的排序

>>> a = [20,10,30,40]
>>> id(a)
45840584
>>> b = sorted(a)
>>> b
[10, 20, 30, 40]
>>> id(a)
45840584
>>> id(b)
46016072#生成新对象
>>> c = sorted(a,reverse=True) #降序
>>> c
[40, 30, 20, 10]

reverse()返回迭代器

包含一个指针,从列表末端往前指,迭代完成后指针指向列表前段,是一个空的对象。

>>> a = [20,10,30,40]
>>> c = reversed(a)
>>> c
<list_reverseiterator object at 0x0000000002BCCEB8>
>>> list(c)
[40, 30, 10, 20]
>>> list(c)
[]#只能调用一次迭代器

列表其他内置函数汇总

max 和min

>>> a = [3,10,20,15,9]
>>> max(a)
20
>>> min(a)
3

sum

对列表里元素求和,对非数值型列表运算会报错

>>> a = [3,10,20,15,9]
>>> sum(a)
57

多维列表

层层嵌套。
二维列表帮助储存表格信息

print()与print(’\n’)

print()自带换行符,输出换一行
print(’\n’)先输出’\n’,再换行

元组

元组没有增加元素、修改元素和删除元素。
元组的访问和处理速度比列表快。
元组可以作为字典的键,而列表永远不能作为字典的键使用。

元组的创建

小括号创建

>>>a=(10,20,30)
>>>type(a)
<class 'tuple'>
>>>a=10,20,30
>>>type(a)
<class 'tuple'>
>>> a = (1)
>>> type(a)
<class 'int'>
>>> a = (1,) #或者 a = 1, >>> type(a)
<class 'tuple'>

tuple()创建元组

>>>b = tuple() #创建一个空元组对象
>>>b = tuple("abc")
>>>b = tuple(range(3))
>>>b = tuple([2,3,4])

元组的删除

del b#删除整个元组

元组的访问和计数

元组不能修改

用索引切片返回元组对象

>>> a = (20,10,30,9,8)
>>> a[1]
10
>>> a[1:3]
(10, 30)
>>> a[:4]
(20, 10, 30, 9)

sorted()

元组排序可用sorted(tupleObj),生成新的列表对象

>>> a = (20,10,30,9,8)
>>> sorted(a)
[8, 9, 10, 20, 30]

zip

zip(列表 1,列表 2,…)将多个列表对应位置的元素组合成为元组,并返回这个 zip 对象。

>>> a = [10,20,30]
>>> b = [40,50,60]
>>> c = [70,80,90]
>>> d = zip(a,b,c)#返回zip对象
>>> list(d)#进一步包装为list对象
[(10, 40, 70), (20, 50, 80), (30, 60, 90)]

生成器推导式创建元组

生成器推导式生成的是生成器对象,可以通过生成器对象转换成列表或者元组,也可以使用生成器对象的__next__()方法进行遍历。
元素访问结束之后必须重新创建该生成器对象。

>>> s = (x*2 for x in range(5))
>>> s
<generator object <genexpr> at 0x0000000002BDEB48>
>>> tuple(s)
(0, 2, 4, 6, 8)
>>> list(s) #只能访问一次元素。第二次就为空了。需要再生成一次
[]
>>> s
<generator object <genexpr> at 0x0000000002BDEB48>
>>> tuple(s)
()
>>> s = (x*2 for x in range(5))
>>> s.__next__()
0
>>> s.__next__()
2
>>> s.__next__()
4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值