本文转自 「好专栏」《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)
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)