列表与元组

  • 列表

我们常常做各种列表,神马购物清单啊,选课表啊等等。在Python中,我们可以把各种类型的数据(包括列表本身)有序地排列在一起,形成一个列表(list)。列表的表示方法是,在中括号内,把不同的元素用逗号隔开:

>>> [True, 1, 2.3, 'haha', 'haha', [7,8]]
[True, 1, 2.3, 'haha', 'haha', [7, 8]]

我们看到,在这个列表中,既有布尔值,还有整数、浮点数、字符串和另一个列表,并且,列表中可以有重复的元素出现。另外,列表可以是空的:[]。

 

  • 基础列表操作方法

列表有一些操作方法和前面讲的字符串是共通的,例如索引(记得索引是从0开始,不是1):

>>> [True, 1, 2.3, 'haha', 'haha', [7, 8]][0]
True
>>> [True, 1, 2.3, 'haha', 'haha', [7, 8]][5]
[7, 8]

列表长度(列表中的元素个数):

>>> len([True, 1, 2.3, 'haha', 'haha', [7, 8]])
6

加法与乘法:

>>> [1, 2] + [3]
[1, 2, 3]
>>> [1, 2] * 2
[1, 2, 1, 2]

针对元素都是数字的列表,我们还可以使用:

>>> min([1, 2.4, 3])
1
>>> max([1, 2.4, 3])
3
>>> sum([1, 2.4, 3])
6.4

关于列表还有很多高级操作方法,我们以后会接触。

 

  • 元组

在Python中,有一种和列表很相像的元素类型,称为元组(Tuple)。它也是将各种数据有序排列在一起,在小括号内,各元素用逗号隔开:

>>> (1, 2, 2, True)
(1, 2, 2, True)

元组也可以是空的:();要注意,如果定义只有一个元素的列表,我们可以写[1],但定义只有一个元素的元组,我们必须在这个元素后面加一个逗号:(1,),否则Python将把(1)识别为整数1。

元组支持我们上述的所有基础列表操作方法。那么你肯定就要问了,那么这二者有什么区别呢?区别在于,列表是可变对象,然鹅元组是不可变对象。

 

  • 初识可变对象与不可变对象

这是Python学习中比较难理解的一个问题(至少对我来说- -)。随着Python知识学习的越多,能理解的越到位。我在这个教程中准备把它分为几个阶段讲,现在这个阶段,我们先有个印象。

当你在Python里创建一个数据的时候,实际上Python是在计算机内存里面取了一小块,创建了这个数据。对于不可变对象来说,想要改变它,Python只能在内存别的地方再取一小块,按修改要求创建一个新的数据给你,没办法直接修改原先创建的那个数据。也就是说,改完以后,最开始创建的那个还在,还是没有改过的状态。我们讲的字符串、元组就是这一类型。

当然还有一类数据,Python可以直接按照你的要求,在原始创建数据时取得的那块内存上直接修改,这就是可变对象。我们讲的列表就是这一类型。

例如你有一个萝卜,你挖了个坑种下去,突然发现哎哟我想要西瓜!那你只能新挖一个坑种一个西瓜,原来的萝卜还在那里——这叫做不可变对象。有一天你从霍格沃兹毕业回来,对着萝卜一声大喝,吓得它直接变成了花生,坑还是萝卜坑但是萝卜变成了花生——这叫做可变对象。

 

  • 本节练习

创建一个Python列表,列表中应有三个元素,分别是三种动物名称。并说出各动物名称对应的列表索引号。

看答案

>>> ['狒狒', 'cat', 'いぬ']
['狒狒', 'cat', 'いぬ'] 

狒狒:0
cat:1
いぬ:2

酱哦

用索引的方式看看列表[‘hello’, ‘from’, ‘the’, ‘other’, ‘side’]中第二个元素中的第一个字符是什么。

看答案

>>> ['hello', 'from', 'the', 'other', 'side'][1][0]
'f'

酱哦


如果还有什么问题或者发现了文章的错误,欢迎给我留言!邮箱可以随便乱写~

发表评论

邮箱地址不会被公开。 必填项已用*标注