Python列表(list)和元组(tuple)

本文转自 「好专栏」《Python列表(list)和元组(tuple)》
咱们上节课讲了Python赋值和变量,而变量在赋值语句中是一种体现,对变量有了一个感性的认识(变量就是一个贴了标签的盒子。),这节课我们讲解下python的列表(list)和元组(tuple)这2个“基础数据类型”,所谓数据类型:用来存放数据的结构。
上一小节咱们讲解了变量就是一个贴了标签的盒子,盒子里面存放的是值,而这今天讲解的2个新的基本类型可以存放多个值。
有人说我也可以用多个变量存放多个值嘛?的确是可以的,但是这样效率太低,所以python给我们提供了list和tuple。
一、python 列表(list) 1、列表格式:
[值,值,…,值]

比如:
[1,2,3,4,5] ['苹果','栗子','樱桃','葡萄']

定义方式:
使用中括号[]和使用list()这个函数来定义:
>>> name_list = ['小明','小强'] >>> name_list ['小明', '小强'] >>> >>> fruit = list() >>> fruit.append('苹果') >>> fruit ['苹果']

list的构成:在中括号之间,填写列表元素,列表元素之间用逗号分隔,列表上有序的,序号从0开始,要访问某个元素使用:
变量名[元素序号]


大家可以把列表想象成一个桌子,桌子有很多抽屉,这些抽屉是有顺序的,编号从0开始。
那么我们像上一节课Python赋值语句和变量一样,定义一个变量,然后它的值是列表,咱们打开python交互模式输入(不懂的同学可以看《第一个python程序》):
>>> fruit=['苹果','栗子','香蕉','猕猴桃'] >>> fruit ['苹果', '栗子', '香蕉', '猕猴桃']


咱们前面说了,列表是有顺序的,并且从0开始,咱们目前需要访问第一个和第三个元素:
>>> fruit=['苹果','栗子','香蕉','猕猴桃'] >>> fruit ['苹果', '栗子', '香蕉', '猕猴桃'] >>> fruit[0] '苹果' >>> >>> fruit[2] '香蕉'


2、列表是可变的,里面的元素是可变的
这点非常重要,大家要记清楚,例如:
>>> fruit[0] = '西瓜' >>> fruit ['西瓜', '栗子', '香蕉', '猕猴桃'] >>> fruit[0] '西瓜' >>> fruit[2]='火龙果' >>> fruit ['西瓜', '栗子', '火龙果', '猕猴桃'] >>>

最开始咱们定义的列表的值:
['苹果','栗子','香蕉','猕猴桃']


然后咱们通过重新“赋值”(赋值,就是把值放到盒子里面,贴上名称) 把第一个元素改成了'西瓜',把第三个元素改成了'火龙果'。
tip:咱们有时候经常会定义一个空的list,然后在后续代码中往里面添加数据 ,定义方式:
>>> name_list = [] >>> name_list [] >>> name_list.append('ff') >>> name_list ['ff'] >>> >>> fruit = list() >>> fruit.append('苹果') >>> fruit ['苹果']


3、列表反向访问
咱们已经知道,我们需要访问列表的第一个元素很简单,我们访问最后一个元素,倒数第二个元素也能办到,这里我们给大家介绍一种方式,可以从后面往前面访问列表的元素:
变量名[负数]


在中括号里面填上负数即可,-1代表倒数第一个元素,-2代表倒数第二个元素,以此类推。例子如下:
>>> num = [11,22,45,32] >>> num [11, 22, 45, 32] >>> num[3] 32 >>> num[-1] 32 >>> num[-2] 45


4、列表元素的添加、删除和列表的长度
1)、向列表添加元素使用:
变量名.append(元素值)


大家需要记住的是通过变量名后面加点就能访问这个变量的函数(或者称成员方法、方法、function),函数相关问题咱们后续课程会讲到,咱们今天就大概知道下,变量名后面加点然后跟函数名称代表想要对变量执行一些操作。
这里执行的操作是对列表添加一个元素,咱在括号里面填入需要添加的元素即可,例子如下:
>>> name_list = ['小明','小东'] >>> name_list ['小明', '小东'] >>> name_list. name_list.append(name_list.copy(name_list.extend(name_list.insert(name_list.remove(name_list.sort( name_list.clear(name_list.count(name_list.index(name_list.pop(name_list.reverse( >>> name_list.append('小芳') >>> name_list ['小明', '小东', '小芳']

如果你需要访问变量的函数,你在变量名后面加点,然后按下Tab键,即可列举这个变量拥有的函数,咱们上面的操作就显示了一些。
2)、删除列表元素使用:
del 变量名[元素索引]


>>> name_list ['小明', '小东', '小芳'] >>> del name_list[1] >>> name_list ['小明', '小芳']


3)、获得列表的长度
这里说的列表的长度其实说的是列表元素的长度,通过len()函数即可访问:
len(列表变量名)


>>> name_list = ['小明','小东'] >>> name_list ['小明', '小东'] >>> len(name_list) 2 >>> name_list.append('小芳') >>> len(name_list) 3 >>> name_list ['小明', '小东', '小芳']


二、python元组(tuple) 1、元组格式
元组和列表一样都是按顺序存放多个数据,格式如下:
(元素,元素,…,元素)


和列表一样,也是有序的,序号从0开始:
变量名[元素序号]


例子:
>>> num=(11,21,33) >>> num[0] 11 >>> num[2] 33


2、元组元素不可变,一旦定义就不能改变元组,包括添加和删除,需要注意的是变量是可以变的,这里说的不能变的是元组。如果不懂变量可以参考《Python赋值语句和变量》中的Python变量小节。
>>> name_list = ('小明','小东') >>> name_list[0]='大胖' Traceback (most recent call last): File "", line 1, in TypeError: 'tuple' object does not support item assignment >>> >>> del name_list[0] Traceback (most recent call last): File "", line 1, in TypeError: 'tuple' object doesn't support item deletion >>> name_list.append('ff') Traceback (most recent call last): File "", line 1, in AttributeError: 'tuple' object has no attribute 'append'

tip:因为元组不可变,所以定义空的元组没有任何意义

3、元组的反向访问。
和列表一样,都是通过负数来访问
变量名[负数]

在中括号里面填上负数即可,-1代表倒数第一个元素,-2代表倒数第二个元素,以此类推。例子如下:
>>> name_list = ('小明','小东') >>> >>> >>> name_list[0] '小明' >>> name_list[-1] '小东' >>> name_list[-2] '小明'


三、到底什么时候用list什么时候用tuple 如果你认为你定义的多个数据不用改变,那么你就定义成元组,如果可能会添加、删除你就用列表

四、list和tuple相互转换 需要说明的是:变量可以随意定义,前面定义了变量,如果不懂的同学可以查看 《python赋值语句和变量》,后面可以再给赋值变成一个新的变量比如下面例子中的 name_list , 可以直接把列表传给tuple()转换成tuple;也可以把tuple传给list()转换成列表。
tip:转换后新的变量存放转换后的结果;而以前的变量是不变的。
例子:
>>> name_list = ['精神小伙','小美'] >>> names = tuple(name_list) >>> names ('精神小伙', '小美') >>> >>> name_list = tuple(['老王','村花']) >>> name_list ('老王', '村花') >>> >>> cats = ('小橘','狸花猫') >>> cats ('小橘', '狸花猫') >>> cat_list = list(cats) >>> cat_list ['小橘', '狸花猫'] >>> cats ('小橘', '狸花猫')


五、课后题: 1、编写代码实现一个列表,元素有 苹果、栗子、香蕉。向列表里面添加葡萄这种水果,然后删除栗子这种水果,然后写出2中访问方式访问倒数第二个元素?此时倒数第二个元素是什么?
2、元组的元素可以删除吗?请编写代码尝试删除元素
3、定义一个元组,元组元素为:男、女,访问倒数第一个元素本节课,内容有点多,大家细细理解和练习即可,请认真完成课后题,如果有不懂的在评论区留言。

系列目录如下: Python语言介绍
Python3编程环境搭建
第一个python程序
python中注释和字符串
python中的数字
python赋值语句和变量
Python列表(list)和元组(tuple)
Python字典(dict)和集合(set)
Python布尔运算
Python条件判断(if语句)
Python循环语句
【Python列表(list)和元组(tuple)】Python切片(slicing)

    推荐阅读