Python小白零基础入门 —— 列表和元组

微信公众号:「Python读数」
如有问题或建议,请公众号留言

这是Python零基础入门的第二篇文章,这篇文章给大家介绍列表和元组都是什么,以及相关的常见操作

一、列表是什么

在接触一个新的事物之前,我习惯先大概了解这个东西是什么,这个东西有什么用。在我的理解中,列表就是一个数据容器,用途自然就是存储各种各样的数据,例如上一篇文章中介绍的数值型、布尔型以及浮点型数据。

在Python中,用方括号[]来表示列表,并用逗号来分割其中的元素。

#列表中的数据可以是相同类型的
numbers = [1, 2, 3, 4, 6]  #全为数字
bools = [True, False, False, True, True]  #全为布尔值
strings = ['A', 'B', 'C', 'D']  #全为字符串
lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]  #全为列表

#列表中的数据也可以是不同类型的
mix_list = [1, 'A', False, True, 'B', 2]

二、列表的常见操作

1、访问列表元素及切片

假设我有一个列表如下,里面按顺序存储了今天晚上6点前在便利店消费过的所有顾客的姓名

consumers = ['张三', '李四', '王五', '老王', '小明']

如果想提取出第一位顾客(或第三位、最后一位),需要用到列表的索引,这和上一篇文章中讲到的字符串的索引原理是一模一样的,直接来看代码。

In [1]: consumers = ['张三', '李四', '王五', '老王', '小明']
    
#提取出第一位顾客(索引从0开始)
In [2]: consumers[0]
Out[2]: '张三'
    
#提取第三位顾客
In [3]: consumers[2]
Out[3]: '王五'

#提取最后一位顾客
In [4]: consumers[-1]
Out[4]: '小明'

当然,也可以提取出前三位顾客或每隔两位顾客取一个

#consumers = ['张三', '李四', '王五', '老王', '小明']
#提取出前三位顾客
In [5]: consumers[:3]
Out[5]: ['张三', '李四', '王五']

#每隔两位顾客取一个
In [6]: consumers[::2]
Out[6]: ['张三', '王五', '小明']

如果你掌握了上篇文章中字符串的索引和切片操作,那么这些应该是很容易就理解了的。

2、修改元素

如果由于人为因素,将小白错认成了小明,那如何将顾客列表中的'小明'修改成'小白'呢?修改列表元素的语法与访问列表元素的语法类似:

#consumers = ['张三', '李四', '王五', '老王', '小明']
#小明是列表中的最后一个元素
#先定位到小明所在的索引位置-1
#再指定该位置的新值
In [10]: consumers[-1] = '小白'

In [11]: consumers
Out[11]: ['张三', '李四', '王五', '老王', '小白']

3、添加元素

之后又有顾客进行了消费,那么就需要把新消费的顾客添加进列表(暂时不考虑重复购买的情况),需要使用append()列表尾部添加元素

# consumers = ['张三', '李四', '王五', '老王', '小白']
# append()往列表尾部添加元素
In [12]: consumers.append('大白')

In [13]: consumers
Out[13]: ['张三', '李四', '王五', '老王', '小白', '大白']

如果你想把新值插入到指定的位置,也是可以实现的,此时需要用到insert()方法

In [14]: consumers = ['张三', '李四', '王五', '老王', '小白']

#往索引为0也就是列表首位插入新元素
In [15]: consumers.insert(0,'大白')

#插入新元素之后,其他元素往后移一位
In [16]: consumers
Out[16]: ['大白', '张三', '李四', '王五', '老王', '小白']

4、删除元素

如果由于错误记录或者重复记录,我们想删除列表中的元素,有以下三种方法可以实现:

del list[index]

适用场景:已知索引位置进行删除

In [17]: consumers = ['张三', '李四', '王五', '老王', '小白']

#删掉'小白'
In [18]: del consumers[-1]

In [19]: consumers
Out[19]: ['张三', '李四', '王五', '老王']

list.pop()

适用场景:要将一个元素从列表中删除,并且需要获取这个被删除的元素

In [20]: consumers = ['张三', '李四', '王五', '老王', '小白']

# pop()默认删除列表的最后一个元素
# 删除的同时会将这个值返回给你
In [21]: consumers.pop()
Out[21]: '小白'

#删除后的列表
In [22]: consumers
Out[22]: ['张三', '李四', '王五', '老王']

当然你也可以利用pop删除指定位置的元素,只需要指定元素的索引即可

In [23]: consumers = ['张三', '李四', '王五', '老王', '小白']

#在列表中删掉'老王这个记录'
In [24]: consumers.pop(3)
Out[24]: '老王'

In [25]: consumers
Out[25]: ['张三', '李四', '王五', '小白']

list.remove()

适用场景:不知道要删除的值的索引,但知道要删除的元素的值

In [28]: consumers = ['张三', '李四', '王五', '老王', '小白']

#删除列表中的'张三'    
In [29]: consumers.remove('张三')

In [30]: consumers
Out[30]: ['李四', '王五', '老王', '小白']

5、反转列表的值

如果我们想按照由近及远的时间顺序查看消费的顾客,可以使用reverse()方法:

In [31]: consumers = ['张三', '李四', '王五', '老王', '小白']

In [32]: consumers.reverse()

In [33]: consumers
Out[33]: ['小白', '老王', '王五', '李四', '张三']

6、查看列表的长度

当一天结束后,我们想查看一天下来有多少顾客进行了消费,可以使用len()来查看列表中有多少个元素。

In [34]: consumers = ['张三', '李四', '王五', '老王', '小白']

In [35]: len(consumers)
Out[35]: 5

对于列表的基本操作就介绍到这里,下面给大家介绍另外一个常用的数据容器——元组。

三、元组

相信经过上面的介绍,大家会感觉到列表的操作很灵活,可以进行任意的增删改操作。元组虽说也是一个数据容器,但是对一个元组而言,只要定义好一个元组后,这个元组是不可变的不能进行任何的增删改操作,因而也被称之为不可变的列表

例如,如果有一个长度和宽度都固定的矩形,那么就可以将矩形的长度和宽度存储在一个元组中,确保它不被修改。

1、元组的定义

元组是用圆括号()来定义的(区别于列表的方括号[]

# 定义一个元组
In [42]: tuple = (500,200)

In [43]: tuple
Out[43]: (500, 200)

2、访问元组元素

访问元组中元素的操作和列表的完全一样,如下:

In [42]: tuple = (500,200)

In [44]: tuple[0]
Out[44]: 500

In [45]: tuple[1]
Out[45]: 200

In [46]: tuple[-1]
Out[46]: 200

但如果你想修改元组中的值时,Python会报错

In [47]: tuple[0] = 200
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-47-f715faf570e9> in <module>
----> 1 tuple[0] = 200

TypeError: 'tuple' object does not support item assignment

四、练习题

  1. 生成一个空列表,将你最喜欢的5个女明星添加到列表中
  2. 在上面的列表中,将列表中第三个女明星替换成你最喜欢的男明星
  3. 去掉在列表中你相对最不喜欢的女明星(指定索引的方式和指定元素的方式)
  4. 用两种方式将列表进行反转
  5. 查看现在你的列表中有几个明星

扫码关注公众号「Python读数」,第一时间获取干货,还可以加Python学习交流群!!
公众号二维码.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值