写在前面
本博客是基于廖雪峰Python教程基础上的自我整理和消化,欢迎大家批评指正。第二节内容将介绍:
- list
- tuple
list
基本形式
Python内置的一种数据类型是列表,由于Python是一种动态语言,事先并不需要对变量进行申明,在Python中依据数据区分数据类型,如
- 整数 1, 34
- 浮点数 3.14
- 字符串 ‘3.14’
而以[ ]包裹起来的即为列表,各个元素之间以逗号分隔,如[‘Ada’,’Sherry’,’Frank’]
>>>list('turbo')#根据字符串创建列表,应对字符串不可改
['t', 'u', 'r', 'p', 'l', 'e']
list方法
作为Python的“苦力”,list有很多的内置方法
长度len()
用len()函数可以获得list元素的个数
>>>books = ['Python', 'C++', 'Java', 'C', 'C#', 'matlab']
>>>len(books)
6
利用索引访问列表元素
用索引来访问list中每一个位置的元素,索引是从0开始的,也可以从后往前访问(负数),还可以分片访问(第一个索引是需要提取部分的第一个元素的编号,第二个索引是分片之后剩下部分的第一个元素的编号,第三个索引是步长):
>>> books[0]
'Python'
>>> books[5]
'matlab'
>>> books[-1]
'matlab'
>>> books[2:5:2]
['Java', 'C#']
>>> books[-3:]
['C', 'C#', 'matlab']
>>> books[:3]
['Python', 'C++', 'Java']
追加元素至末尾append()
list是一个可变的有序表,所以,可以往list末尾追加新的对象
>>> books.append('Android')
>>> books
['Python', 'C++', 'Java', 'C', 'C#', 'matlab', 'Android']
也可在指定位置赋值或分片赋值,赋值元素的长度、类型等都没有要求
>>>name = list("Pear")
>>> name[1:] = list("ython")#不等长赋值
>>> name
['P', 'y', 't', 'h', 'o', 'n']
>>> name[1:1] = [1, 2, 3]#插入元素的另一种表达
>>> name
['P', '1', '2', '3', 'y', 't', 'h', 'o', 'n']
插入insert()和删除pop()
在指定位置插入
>>> books.insert(1,'Labview')
>>> books
['Python', 'Labview', 'C++', 'Java', 'C', 'C#', 'matlab', 'Android']
删除元素
pop()是有返回值的,返回弹出的元素
>>> books.pop()
'Android'
>>> books
['Python', 'Labview', 'C++', 'Java', 'C', 'C#', 'matlab']
>>> books.pop(1)
'Labview'
>>> books
['Python', 'C++', 'Java', 'C', 'C#', 'matlab']
寻找匹配值index()与移除remove()
从列表中找出某个值第一个匹配项的索引位置
>>> books.index('Python')
0
移除列表中某个值的第一个匹配项
>>> books.remove('matlab')
>>> books
['Python', 'C++', 'Java', 'C', 'C#']
其他
count()统计某个元素在列表
>>> books.count("Java")
1
extend()在列表的末尾一次性追加另一个序列中的多个值
reverse()将列表中的元素反向存放
sort()原地排序
tuple
基本形式
tuple和list非常类似,但是tuple一旦初始化就不能修改,以()包裹逗号分隔,或简单以逗号分隔
>>> (1,2,3)
(1, 2, 3)
>>> 1,2,3
(1, 2, 3)
>>> 'Android','ios','Symbian'
('Android', 'ios', 'Symbian')
tuple的不变性
tuple没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用tuple里的元素,但不能赋值成另外的元素。
这样的意义在于,因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来
*p.s.*tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
只有一个元素的tuple
但是,要定义一个只有1个元素的tuple,不能这么定义:
>>> t = (1)
>>> t
1
定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:
>>> t = (1,)
>>> t
(1,)
Python在显示只有1个元素的tuple时,也会加一个逗号,,以免误解