Python学习笔记(六)——列表
admin
2023-07-08 16:44:16
0

列表(list)可以包含任何种类的对象:数字、字符串甚至其他列表。列表是可变对象,支持原处修改,可以通过指定的偏移值和分片、列表方法调用、删除语句。

列表的属性:

  1. 任意对象的有序集合:列表可以支持任意对象,包括其他列表及类型,同时所包含的每一项都包括了从左往右的位置顺序,列表属于序列。
  2. 通过偏移读取:可以通过列表对象的偏移进行索引,从而读取部分内容,执行分片和合并任务;
  3. 可变长度、异构及任意嵌套:列表不是不可变类型,支持长度变化(可变长度),可以包含任意类型对象(异构),列表能够包含其他复杂对象,支持嵌套;
  4. 属于可变序列:列表支持原处修改,可以响应所有针对字符串序列的操作,例如索引、分片和合并。

列表操作:
Python学习笔记(六)——列表

*支持+(合并)和(重复)操作:**

>>> a=[1,2,3,4,5]
>>>
>>> len(a)
5
>>>
>>> [1,2,3]+[4,5]
[1, 2, 3, 4, 5]
>>>
>>> a*4
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

列表迭代与解析:

>>> 3 in [1,2,3]
True
>>>
>>> 3 not in [1,2,3]
False
>>>
>>> for x in a:
...     print(x,end='\n')
...
1
2
3
4
5

列表解析:通过对序列中的每一项应用一个表达式来构建一个新的列表的方式。

>>> resu = [d ** d for d in a]
>>>
>>> resu
[1, 4, 27, 256, 3125]
>>>
>>> a = list('Yert')
>>>
>>> re = [g * 4 for g in a]
>>>
>>> re
['YYYY', 'eeee', 'rrrr', 'tttt']

索引、分片和矩阵:

由于列表属于序列,索引、分片操作与字符串操作基本相同,然而对列表进行索引的结果是指定的偏移处的对象(不管什么类型),而对列表进行分片时返回一个新的列表。

>>> L = list('Yert')
>>>
>>> L
['Y', 'e', 'r', 't']
>>>
>>> L[2]
'r'
>>> L[2:3]
['r']
>>>
>>> L[-1]
't'
>>> L[1:]
['e', 'r', 't']

列表的嵌套:

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

原处修改列表:

列表是属于可变类型的,支持原处修改列表对象的操作。修改时不会像字符串生成新的对象。

索引与分片的赋值:
可以将列表赋值给一个特定项(偏移)或整个片段(分片)来改变内容。

>>> L = ['Python','Yert','Alan','Ye']
>>>
>>> L[1] = 'Sam'
>>>
>>> L
['Python', 'Sam', 'Alan', 'Ye']
>>>
>>> L[0:2] = ['Java','James']
>>>
>>> L
['Java', 'James', 'Alan', 'Ye']

列表常用方法调用:

>>> L.append('Lank')  #插入对象
>>>
>>> L
['Java', 'James', 'Alan', 'Ye', 'Lank']
>>>
>>> L.sort()        #对列表对象进行排序
>>> L
['Alan', 'James', 'Java', 'Lank', 'Ye']

Append方法:

简单的将一个单项(对象引用)添加至列表末端。与合并不相同的是,append允许传入单一对象而不是列表。L.append(X) 与L+[X]的结果类似,前者会原地修改L,后者会生成新的列表。

Sort方法:
原地对列表进行排序,使用Python标准的比较检验作为默认值,而且以递增的顺序进行排序。可以通过传入关键字来修改排序行为——指定按名称传递的函数调用中特殊的”name=value”语法,给定配置选项,在排序中,key参数给出一个单个参数的函数,返回在排序中使用的值,reverse参数允许排序按照降序而不是升序进行。

>>> L=['Agc','aBe','adC']
>>>
>>> L
['Agc', 'aBe', 'adC']
>>>
>>> L.sort(key=str.lower)
>>>
>>> L
['aBe', 'adC', 'Agc']
>>>
>>> L=['Agc','aBe','adC']
>>>
>>> L.sort(key=str.lower,reverse=True)
>>>
>>> L
['Agc', 'adC', 'aBe']

Sort方法可以作为内置方法使用,排序任何对象(列表之外的对象),并且针对结果返回一个新的列表(不是原处修改)。

>>> L = ['abc','ABD','aBe']
>>>
>>> L
['abc', 'ABD', 'aBe']
>>>
>>> sorted(L,key=str.lower,reverse=True)
['aBe', 'ABD', 'abc']
>>>
>>> L = ['abc','ABD','aBe']
>>>
>>> sorted([x.lower() for x in L],reverse=True)
['abe', 'abd', 'abc']

Extend方法可以插入对象,pop方法弹出最后一位对象,reverse函数逆序列表。

>>> L = [1,2,3]
>>>
>>> L.extend([4,5,6,7])
>>>
>>> L
[1, 2, 3, 4, 5, 6, 7]
>>>
>>> L.pop()
7
>>>
>>> L
[1, 2, 3, 4, 5, 6]
>>>
>>> L.reverse()
>>>
>>> L
[6, 5, 4, 3, 2, 1]
>>>
>>> list(reversed(L))
[1, 2, 3, 4, 5, 6]

Pop方法接受某一个即将删除并返回的元素的偏移(默认值为最后一个元素),这一偏移是可选的。

>>> L = ['a','Alan','d','Yert']
>>>
>>>
>>> help(L.pop)                  #通过help方法可以查看对象引用方法的说明文档
Help on built-in function pop:

pop(index=-1, /) method of builtins.list instance
    Remove and return item at index (default last).

    Raises IndexError if list is empty or index is out of range.

>>>
>>> L.pop(2)
'd'
>>>
>>> L
['a', 'Alan', 'Yert']

Remove方法移除某元素:

>>> L.remove('a')
>>>
>>> L
['Alan', 'd', 'Yert']
>>>
>>> L = ['a','Alan','d','Yert','a','a','a']
>>>
>>> L
['a', 'Alan', 'd', 'Yert', 'a', 'a', 'a']
>>>
>>> L.remove('a')
>>>
>>> L
['Alan', 'd', 'Yert', 'a', 'a', 'a']

Insert方法在某处偏移插入元素:

>>> L = ['Yert','dd','rm','Sam']
>>>
>>> L
['Yert', 'dd', 'rm', 'Sam']
>>>
>>> L.insert(2,'Jinja')
>>>
>>> L
['Yert', 'dd', 'Jinja', 'rm', 'Sam']

使用del方法删除列表的某项和分片:

>>> L
['Yert', 'dd', 'Jinja', 'rm', 'Sam']
>>>
>>> del L[1]
>>>
>>> L
['Yert', 'Jinja', 'rm', 'Sam']
>>>
>>> del L[1:]
>>>
>>> L
['Yert']

由于分片赋值时删除外加插入操作,可以通过将空列表赋值给分片来删除列表片段(L[i:j]=[])。Python会删除左侧的分片,然后什么也不插入。

将空列表赋值给一个索引,只会在指定的位置存储空列表的引用,而不是删除:

>>> L = ['Yert','dd','rm','Sam']
>>>
>>> L[1:] = []
>>>
>>> L
['Yert']

相关内容

热门资讯

美前副总统:共和党失去了方向,... 2026年是美国的中期选举年,共和党选情不利,可能在年底的选举中遭遇挫败。美国前副总统彭斯5月31日...
南枝原来去过中国?《给阿嬷的情... 《给阿嬷的情书》票房口碑双丰收,目前票房已突破13亿。凤凰卫视最新一期《问答神州》专访了该片导演蓝鸿...
法国海军扣押一艘俄“影子舰队”... 近日,法国海军在大西洋海域扣押了一艘据称从俄罗斯摩尔曼斯克出发的油轮,引发俄方强烈不满。俄新社6月1...
凤凰晚报丨面粉染头模仿黄仁勋,... 今日人物【面粉染头模仿黄仁勋,农村青年走红后称遭“法务”警告】“先赔偿5000元肖像侵权使用费,再删...
亲特朗普极右派候选人领跑哥伦比... 【文/观察者网 熊超然】当地时间5月31日,哥伦比亚总统选举拉开帷幕,首轮投票计票工作已完成逾99%...
2026年度网络举报系列宣传活... 5月28日至29日,以“每一件举报,都是共治的力量——豫你e行 同心护网”为主题的2026年度网络举...
中原首例帝企鹅DNA性别鉴定!... 近日,郑州海昌海洋公园正式对外公布中原首对人工繁育的帝企鹅萌宝的DNA性别鉴定报告。这是中原首个将 ...
我国科学家为细胞信号“导航”开... 新华社济南5月31日电(记者张力元)人体细胞犹如一座精密的通信城市,每天都有大量“指令”穿梭传递,调...
极端大风突袭哈尔滨!过山车停摆... 极目新闻记者 詹钘5月31日,受强对流天气影响,哈尔滨国际会展中心体育场相关设施受到损坏,原计划当晚...
三原电缆取得电缆接头连接用防护... 国家知识产权局信息显示,上海三原电缆附件有限公司取得一项名为“一种电缆接头连接用防护结构”的专利,授...