第3章 - 列表、元组和字典

python还有其他一些重要的数据类型,您可能每天都会用到。它们被称为列表、元组和字典。本章的目的是让您了解这些数据类型中的每一种。它们并不是特别复杂,所以我希望您能发现如何非常直接地使用它们。一旦您掌握了这三种数据类型加上上上一章中的字符串数据类型,您将在您的Python教育中有相当大的进展。您将在99%的应用程序中使用这四个构建基块。

列表

python列表与其他语言中的数组类似。在Python中,可以通过以下方式创建空列表。

>>> my_list = []
>>> my_list = list()

如您所见,您可以使用方括号或使用python内置的, list .列表包含元素列表,例如字符串、整数、对象或类型的混合。让我们来看一些例子:

>>> my_list = [1, 2, 3]
>>> my_list2 = ["a", "b", "c"]
>>> my_list3 = ["a", 1, "Python", 5]

第一个列表有3个整数,第二个列表有3个字符串,第三个列表有一个混合物。您还可以创建如下列表:

>>> my_nested_list = [my_list, my_list2]
>>> my_nested_list
[[1, 2, 3], ['a', 'b', 'c']]

偶尔,您会希望将两个列表组合在一起。第一种方法是使用扩展方法:

>>> combo_list = []
>>> one_list = [4, 5]
>>> combo_list.extend(one_list)
>>> combo_list
[4, 5]

稍微简单一点的方法是将两个列表添加到一起。

>>> my_list = [1, 2, 3]
>>> my_list2 = ["a", "b", "c"]
>>> combo_list = my_list + my_list2
>>> combo_list
[1, 2, 3, 'a', 'b', 'c']

是的,真的很容易。您还可以对列表进行排序。让我们花点时间看看如何做到这一点:

>>> alpha_list = [34, 23, 67, 100, 88, 2]
>>> alpha_list.sort()
>>> alpha_list
[2, 23, 34, 67, 88, 100]

现在有了上面的一个。你能看到吗?让我们再举一个例子来说明这一点:

>>> alpha_list = [34, 23, 67, 100, 88, 2]
>>> sorted_list = alpha_list.sort()
>>> sorted_list
>>> print(sorted_list)
None

在本例中,我们尝试将排序列表赋给变量。但是,当您调用 排序() 方法对列表进行排序。因此,如果您试图将结果赋给另一个变量,那么您将发现您将得到一个none对象,这在其他语言中类似于一个空值。因此,当您想对某个内容进行排序时,只需记住在适当的位置对其进行排序,并且不能将其分配给其他变量。

您可以像处理字符串那样对列表进行切片:

>>> alpha_list[0:3]
[2, 23, 34]

此代码仅返回前3个元素的列表。

多元组

元组类似于列表,但创建时使用括号而不是方括号。您也可以使用 元组 内置。主要的区别在于,元组是不可变的,而列表是可变的。我们来看几个例子:

>>> my_tuple = (1, 2, 3, 4, 5)
>>> my_tuple[0:3]
(1, 2, 3)
>>> another_tuple = tuple()
>>> abc = tuple([1, 2, 3])

上面的代码演示了用五个元素创建元组的一种方法。它还显示您可以执行元组切片。但是,不能对元组排序!最后两个示例演示如何使用 元组 关键字。第一个示例只创建一个空元组,而第二个示例包含三个元素。注意它里面有一个列表。这是一个例子 铸造 .我们可以换或者 cast 从一种数据类型到另一种数据类型的项。在本例中,我们将列表强制转换为元组。如果你想把 abc 返回列表,可以执行以下操作:

>>> abc_list = list(abc)

重申一下,上面的代码使用 list 功能。

辞典

python字典基本上是 哈希表 或者散列映射。在某些语言中,它们可能被称为 联想记忆关联数组 .它们使用键进行索引,键可以是任何不可变的类型。例如,字符串或数字可以是键。您需要知道字典是一组无序的键:值对,并且键必须是唯一的。您可以通过调用字典实例的 keys 方法。要检查字典是否有键,可以使用python的 in 关键字。在一些旧版本的python中(具体来说是2.3和更旧的版本),您将看到 has_key 关键字,用于测试关键字是否在字典中。该关键字在python 2.x中已被弃用,并已完全从python 3.x中删除。

让我们花点时间看看我们是如何创建字典的。

>>> my_dict = {}
>>> another_dict = dict()
>>> my_other_dict = {"one":1, "two":2, "three":3}
>>> my_other_dict
{'three': 3, 'two': 2, 'one': 1}

前两个示例演示如何创建空字典。所有词典都用大括号括起来。最后一行是打印出来的,这样你就可以看到一本字典有多无序。现在是时候了解如何访问字典中的值了。

>>> my_other_dict["one"]
1
>>> my_dict = {"name":"Mike", "address":"123 Happy Way"}
>>> my_dict["name"]
'Mike'

在第一个示例中,我们使用上一个示例中的字典并拉出与名为“one”的键关联的值。第二个示例说明如何获取“name”键的值。现在,让我们看看如何判断一个键是否在字典中:

>>> "name" in my_dict
True
>>> "state" in my_dict
False

因此,如果键在字典中,python将返回 布尔值真 .否则返回一个布尔值 .如果需要获得字典中所有键的列表,请执行以下操作:

>>> my_dict.keys()
dict_keys(['name', 'address'])

在python 2中, keys 方法返回一个列表。但在python 3中,它返回 查看对象 .这使开发人员能够更新字典,视图也将自动更新。还要注意,当使用 in 关键字用于字典成员资格测试,最好对字典进行测试,而不是从 keys 方法。见下文:

>>> "name" in my_dict         # this is good
>>> "name" in my_dict.keys()  # this works too, but is slower

虽然现在这对你来说可能不重要,但在现实的工作环境中,秒很重要。当你有成千上万的文件要处理时,这些小技巧可以从长远来看节省你很多时间!

总结

在本章中,您刚刚学习了如何构造Python列表、元组和字典。在继续之前,请确保您了解本节中的所有内容。这些概念将帮助您设计程序。如果您选择从事Python程序员的工作,那么您将每天使用这些构建块来构建复杂的数据结构。这些数据类型中的每一种都可以嵌套在其他数据类型中。例如,您可以有一个嵌套字典、一个元组字典、一个由多个字典组成的元组,等等。

当您准备好继续工作时,我们将了解Python对条件语句的支持。