很多编程语言中都有数组这一对象,Python和它对应的则是列表list
,还有元组tuple
。元组和列表有很多相似地方,最大区别在于不可变。可以理解为Python中的list对应为其它与语言中的可变数组,而tuple对应为不可变数组。不可变指的是不能对里面的元素进行增加
、删除
、修改
、排序
、倒序
等操作。下面会依依介绍到它俩:
List
- 初始化
Python中的列表用方括号来表达,里面元素用逗号隔开,依次初始化一个空数列表
、整型列表
、字符串列表
、混合类型列表
,最后还用到list()
来初始化,此方法会把每一个元素作为列表的一项:
a = []
b = [1, 2, 3, 4]
c = ['hello', 'world']
d = [1, 'hello', [1], False]
f = list('hello')
print a
print b
print c
print d
print f
打印结果:
[]
[1, 2, 3, 4]
['hello', 'world']
[1, 'hello', [1], False]
['h', 'e', 'l', 'l', 'o']
- 元素访问
Python中的列表可以通过下标访问某个指定位置的元素,也可以通过切片方式访问指定范围内的元素:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 访问下标为1的元素
print a[1]
# 访问最后一个元素
print a[-1]
# 访问所有元素
print a[:]
# 访问从第三个元素到最后一个元素
print a[3:]
# 访问从第1个元素到倒数第四个元素,但不包括它倒数第四个元素
print a[:-4]
# 访问从第4个元素到第六个元素,但不包括第六个元素
print a[4:6]
打印结果:
1
9
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5]
[4, 5]
- 增删改
a = [1, 2, 3]
# 末尾增加一个元素4
a.append(4)
print a
# 0的位置插入一个元素0
a.insert(0,0)
print a
# 删除下标为4的元素
a.remove(4)
print a
# 把最后一个元素从列表中移除并返回移除的元素值
b = a.pop()
print a
print b
# 修改0位置的元素值
a[0] = 9
print a
打印结果:
[1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 1, 2, 3]
[0, 1, 2]
3
[9, 1, 2]
- 操作符
这里的操作符有+
、*
,+
用于字符串的拼接,*
用于字符串的重复:
a = [1,2,3]
b = [4,5,6]
c = a+b
d = ['Hi'] * 3
print c
print d
打印结果:
[1, 2, 3, 4, 5, 6]
['Hi', 'Hi', 'Hi']
- 其它操作
a = [2, 3, 0, 4, 5, 1]
# 判断3是否在列表a中
print 3 in a
# 找到3在列表中的位置
print a.index(3)
# 使列表a元素倒序
a.reverse()
print a
# 给列表a元素排序
a.sort()
print a
# 打乱列表a的元素位置
random.shuffle(a)
print a
# 计算列表a的长度
print len(a)
# 求列表a中最大的元素
print max(a)
# 求列表a中最小的元素
print min(a)
打印结果:
True
1
[1, 5, 4, 0, 3, 2]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 5, 4, 3]
6
5
0
Tuple
- 初始化
Python中的元组用小括号来表达,里面元素用逗号隔开,当只有一个元素时,需要在元素后面加逗号
,和列表类似:
a = ()
b = (1, 2, 3, 4)
c = ('hello', 'world')
d = (1, 'hello', [1], False)
f = tuple('hello')
g = ('hi',)
print a
print b
print c
print d
print f
print g
打印结果:
()
(1, 2, 3, 4)
('hello', 'world')
(1, 'hello', [1], False)
('h', 'e', 'l', 'l', 'o')
('hi',)
- 元素访问
元组的元素访问方法和列表是类似的,可以通过下标方式来访问,也可以通过切片方式。 - 增删改
元组不支持元素的增加,不支持修改,删除只能删除整个元组:
a = (1, 2, 3)
del a
- 操作符
元组同样支持+
、*
,和列表中的用法是一样的。 - 其它操作
和元组相比,不支持reverse()
、sort()
、random.shuffle()
:
a = (2, 3, 0, 4, 5, 1)
# 判断3是否在元组a中
print 3 in a
# 找到3在元组中的位置
print a.index(3)
print len(a)
# 求元组a中最大的元素
print max(a)
# 求元组a中最小的元素
print min(a)
打印结果
True
1
6
5
0
List和Tuple相互转换
List转换成Tuple需要用到tuple
函数,同理Tuple转换成List用到list
函数:
a = [1,2,3]
b = (4,5,6)
c = tuple(a)
d = list(b)
print c
print d
打印结果
(1, 2, 3)
[4, 5, 6]