您的位置:首页 > 编程语言 > Python开发

Python学习随笔二:list和tuple

2017-08-15 10:42 274 查看

写在前面

本博客是基于廖雪峰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是一个可
ad0a
变的有序表,所以,可以往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时,也会加一个逗号,,以免误解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: