第 8 章 元组和列表
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
人类动物与低等灵长类动物的不同之处在于对列表的热情。
H.艾伦-史密斯
在前几章中,我们从 Python 的一些基本数据类型开始:布尔、整数、浮点数和字符串。 如果将这些数据类型看作原子,那么本章的数据结构就像分子。 也就是说,我们将这些基本类型以更复杂的方式组合在一起。 您每天都会用到这些数据类型。 编程的大部分工作就是将数据切碎并粘合成特定的形式,本章的元组和列表就是我们的第一个例子。
大多数计算机语言都可以表示由整数位置索引的项目序列:第一个、第二个,依此类推,直到最后一个。 您已经看过 Python 字符串(第 4 章;文本字符序列) 以及字节和字节数组(第 5 章;8 位二进制值序列)。
Python 有更多的序列结构:元组和列表。 这些结构包含零个或多个元素。 与字符串不同,元素可以是不同的类型。 事实上,每个元素都可以是任何Python 对象。 这样,您就可以随心所欲地创建深层和复杂的结构。
为什么 Python 同时包含 list 和 tuples 呢? Tuples 是不可变的;当您将元素分配给 tuple 时(只分配一次),这些元素就已经 "出炉 "了,无法更改。 Lists 是可变的,这意味着您可以热情洋溢地插入和删除元素。 我将展示这两种结构的许多示例,重点放在 list 上。
元组
让我们 先把一个细节说清楚。您可能会听到tuple 的两种发音,哪个是对的? 如果您猜错了,会不会被认为是 Python 的装腔作势者? 不用担心。Python 的创造者 Guido van Rossum通过 Twitter 说:
我在周一/周二/周五念 tuple too-pull,在周二/周四/周六念 tub-pull。周日我不谈论它们。)
tuple 的拉丁文原意是加,读作tub-pull。
用逗号和()创建
正如以下示例所示,创建元组的语法有点不一致。首先,我们使用() 创建一个空元组:
>>>empty_tuple=()>>>empty_tuple()
要创建一个包含一个或多个元素的元组,请在每个元素后面加上逗号。 这适用于包含一个元素的元组:
>>>one_marx='Groucho',>>>one_marx('Groucho',)
你可以用括号把它们括起来,这样得到的元组还是一样的:
>>>one_marx=('Groucho',)>>>one_marx('Groucho',)
这里有一个小问题:如果括号中只有一个元素,但省略了逗号,那么得到的就不是一个元组,而只是一个元素(在本例中,字符串Groucho ):
>>>one_marx=('Groucho')>>>one_marx'Groucho'>>>type(one_marx)<class 'str'>
如果有多个元素,除了最后一个元素外,其他元素后面都要加上逗号:
>>>marx_tuple='Groucho','Chico','Harpo'>>>marx_tuple('Groucho', 'Chico', 'Harpo')
实际上,在最后一个元素后面加一个逗号也无妨(有些语言对此比较挑剔):
>>>marx_tuple='Groucho','Chico','Harpo',>>>marx_tuple('Groucho', 'Chico', 'Harpo') ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access