Python列表类型

来自CloudWiki
Cloud17讨论 | 贡献2020年4月26日 (日) 03:55的版本
跳转至: 导航搜索

列表的定义

列表是包含0个或多个元组组成的有序序列,属 于序列类型。列表可以元素进行增加、删除、替 换、查找等操作。列表没有长度限制,元素类型 可以不同,不需要预定义长度。

列表类型用中括号([])表示,也可以通过list(x) 函数将集合或字符串类型转换成列表类型

基础操作

创建列表

  • 使用“=”直接将一个列表赋值给变量即可创建列表对象。
>>> a_list = []                       #创建空列表
>>> a_list = ['a', 'b', 'mpilgrim', 'z', 'example']


  • 也可以使用list()函数把元组、range对象、字符串、字典、集合或其他可迭代对象转换为列表。
>>> list((3,5,7,9,11))                #将元组转换为列表
[3, 5, 7, 9, 11]
>>> list(range(1, 10, 2))             #将range对象转换为列表
[1, 3, 5, 7, 9]
>>> list('hello world')               #将字符串转换为列表
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
>>> list({3,7,5})                     #将集合转换为列表
[3, 5, 7]</nowiki>
  • 两个列表相加:
>>> ls =[1,2,3]

>>> lt =[4,5,6]

>>> ls = ls + lt
>>> print(ls)
[1, 2, 3, 4, 5, 6]

列表的索引

  • 创建列表之后,可以使用整数作为下标来访问其中的元素,其中0表示第1个元素,1表示第2个元素,2表示第3个元素,以此类推;列表还支持使用负整数作为下标,其中-1表示最后1个元素,-2表示倒数第2个元素,-3表示倒数第3个元素,以此类推。
>>> x = list('Python')             #创建类别对象
>>> x
['P', 'y', 't', 'h', 'o', 'n']
>>> x[0]                           #下标为0的元素,第一个元素
'P'
>>> x[-1]                          #下标为-1的元素,最后一个元素
'n'
  • Python6-2.png
  • 可以使用遍历循环对列表类型进行遍历操作
>>> x = list('Python')
       
>>> for i in x:
       print(i)

       
P
y
t
h
o
n

列表的切片

切片是列表的基本操作,用于获得列表的一个片 段,即获得一个或多个元素。

切片后的结果也是 列表类型。

切片有两种使用方式:

  • <列表或列表变量>[N: M] :获取从N到M(不包含M)的元素组成新 的列表。
  • <列表或列表变量>[N: M: K] :获取从N到M(不包 含M)以K为步长所对应元素组成的列


>>> ls = [1010,"1010",[1010,"1010"],1010]


>>> ls[1:4]
['1010', [1010, '1010'], 1010]
>>> ls[-1:-3]
[]


>>> ls[-3:-1]
['1010', [1010, '1010']]
>>> ls[0:4:2]
[1010, [1010, '1010']]


列表对象支持的运算符

加法运算符

  • 加法运算符+也可以实现列表增加元素的目的,但不属于原地操作,而是返回新列表,涉及大量元素的复制,效率非常低。使用复合赋值运算符+=实现列表追加元素时属于原地操作,与append()方法一样高效。
>>> x = [1, 2, 3]
>>> id(x)
53868168
>>> x = x + [4]                        #连接两个列表
>>> x
[1, 2, 3, 4]
>>> id(x)                              #内存地址发生改变
53875720
>>> x += [5]                           #为列表追加元素
>>> x
[1, 2, 3, 4, 5]
>>> id(x)                              #内存地址不变
53875720

乘法运算符

  • 乘法运算符*可以用于列表和整数相乘,表示序列重复,返回新列表。运算符*=也可以用于列表元素重复,属于原地操作。
>>> x = [1, 2, 3, 4]
>>> id(x)
54497224
>>> x = x * 2                           #元素重复,返回新列表
>>> x
[1, 2, 3, 4, 1, 2, 3, 4]
>>> id(x)                               #地址发生改变
54603912
>>> x *= 2                              #元素重复,原地进行
>>> x
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
>>> id(x)                               #地址不变

成员测试运算符in

  • 可用于测试列表中是否包含某个元素,查询时间随着列表长度的增加而线性增加,而同样的操作对于集合而言则是常数级的。
>>> 3 in [1, 2, 3]
True
>>> 3 in [1, 2, '3']
False