列表概述
列表是包含若干元素的有序连续内存空间
在形式上,列表的所有元素都放在一对方括号中,相邻元素之间使用逗号隔开
同一列表中的元素的数据类型可以不相同
若只有一对方括号而没有任何元素则表示为空列表
列表的创建
使用 =[] 或者list()创建
1、=[] 创建
>>> a = [1,2,3,4,5,6,'a']
>>> a
[1, 2, 3, 4, 5, 6, 'a']
>>> type(a)
<class 'list'>
2、list()创建
>>> b = list((1,2,3,4,5,6,7,8,9,'d'))
>>> b
[1, 2, 3, 4, 5, 6, 7, 8, 9, 'd']
>>> type(b)
<class 'list'>
3、创建空列表
>>> x = list()
>>> x
[]
>>> type(x)
<class 'list'>
也可以使用list()函数把元组、range对象、字符串、字典、集合或其他可迭代对象转换为列表
>>> list((1,2,3,4,5,6))
[1, 2, 3, 4, 5, 6]
>>> list(range(1,10,1))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list("hello world")
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
>>> list({1,3,5,7})
[1, 3, 5, 7]
>>> list({'a':1,'b':2,'c':3})
['a', 'b', 'c']
>>> list({'a':1,'b':2,'c':3}.items())
[('a', 1), ('b', 2), ('c', 3)]
列表的元素访问
列表属于有序序列,可以使用整数或负整数作为下标来随机访问列表中任意位置的元素
>>> a = list("HelloWorld")
>>> a
['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']
>>> a[0]
'H'
>>> a[-1]
'd'
>>> a[::-1]
['d', 'l', 'r', 'o', 'W', 'o', 'l', 'l', 'e', 'H']
>>> len(a)
10
>>> a[1:5]
['e', 'l', 'l', 'o']
>>> a[1:5:2]
['e', 'l']
使用index()返回元素所在的索引位置
>>> a.index('H')
0
>>> a.index('d')
9
列表的删除
-
当一个列表不再使用时,使用del命令将其删除
-
list().pop(i) 删除第i位置的元素,若不写i则默认删除最后一个元素
会返回被删除元素
>>> x = [1,2,3,4,5]
>>> x
[1, 2, 3, 4, 5]
>>> del x
>>> x
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
x
NameError: name 'x' is not defined
>>> a = [1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]
>>> a.pop(0)
1
>>> a
[2, 3, 4, 5]
列表常用方法
方法 | 说明 |
---|---|
.append(x) | 将x追加到列表的尾部 |
.extend(L) | 将列表L中的所有元素追加到列表尾部 |
.insert(index,x) | 在列表index位置处插入x |
.remove(x) | 在列表中删除第一个值为x的元素,如列表不存在x,抛出异常 |
.pop([index]) | 默认删除列表最后一个元素,并返回删除的元素 |
.index(x) | 返回列表中x元素所在的索引值,不存在x则抛出异常 |
.count(x) | 返回元素x在列表中出现的次数 |
.reverse() | 对列表所有元素进行原地逆转,首尾交换 |
a = [1,2,3]
>>> a
[1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> a.insert(1,5)
>>> a
[1, 5, 2, 3, 4]
>>> b = [7,8]
>>> a.extend(b)
>>> a
[1, 5, 2, 3, 4, 7, 8]
>>> a.pop()
8
>>> a
[1, 5, 2, 3, 4, 7]
>>> a.pop(4)
4
>>> a
[1, 5, 2, 3, 7]
>>> a.index(5)
1
>>> a.append(5)
>>> a
[1, 5, 2, 3, 7, 5]
>>> a.remove(5)
>>> a
[1, 2, 3, 7, 5]
>>> a.count(1)
1
>>> a
[1, 2, 3, 7, 5]
>>> a.reverse()
>>> a
[5, 7, 3, 2, 1]
列表的遍历
- 通过for循环 for i in list
- .sort() 列表的专用排序方式(可以指定规则)
>>> for i in a:
print(i)
10
7
3
2
1
>>> a.sort()
>>> a
[1, 2, 3, 7, 10]
元组Tuple
元组可看作是轻量级列表或者简化版列表,支持与列表类似的操作,但功能不如列表强大
形式上,元组的所有元素都放在一对圆括号内,元素之间使用逗号隔开
如果元组中只有一个元素,则必须在最后增加一个逗号
元组的创建
通过()或者tuple创建
>>> a = (1,2,3,'a')
>>> type(a)
<class 'tuple'>
>>> a
(1, 2, 3, 'a')
>>> b = tuple((4,5,6,'b'))
>>> type(b)
<class 'tuple'>
>>> b
(4, 5, 6, 'b')
元组创建后不能修改
>>> a = [1,2,3]
>>> id(a)
1502219154240
>>> b = [1,2,3]
>>> a += b
>>> a
[1, 2, 3, 1, 2, 3]
>>> id(a)
1502219154240
>>> c = (4,5,6)
>>> d = (4,5,6)
>>> id(c)
1502219095808
>>> c += d
>>> id(c)
1502218912288
常用方法
- len(tuple) 获得里元组tuple 的元素个数
- index(x) 返回元素x的索引位置
- count(x) 返回元组中元素x出现的次数
- sorted(tuple) 返回tuple元组排序后的新元组,原来的元组不变
>>> a = (1,2,3)
>>> len(a)
3
>>> a.count(2)
1
>>> a.index(1)
0
>>> b = (1,2,3,4,4,1,1,1,1,11,1,1)
>>> b.count(1)
7
>>> sorted(b)
[1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 4, 11]
>>> b
(1, 2, 3, 4, 4, 1, 1, 1, 1, 11, 1, 1)
元组的排序
- 使用for循环进行排序 for i in tuple
>>> b
(1, 2, 3, 4, 4, 1, 1, 1, 1, 11, 1, 1)
>>> for i in b:
print(i)
1
2
3
4
4
1
1
1
1
11
1
1
列表List和元组Tuple的异同
- 元组和列表都属于有序序列,均可以使用count()和index()
- 元组属于不可变数据类型,不可以直接修改元组中元素的值,也无法为元组增加或删除元素
- 元组只能通过切片访问元组的中元素,不可通过切片对元组中元素进行修改、增加和删除
- 元组的访问速度比列表更快
- 元组可作为字典的键、集合的元素,而列表永远不能当作字典的键和集合的元素使用