Python中的数据结构( 三 )


Python中的所有内容都是一个对象 。所以我们可以使用内置的id()方法来检查对象的内存位置 。这被称为对象的标识 。让我们创建一个列表并确定列表及其元素的位置:

Python中的数据结构

文章插图
 
如你所见,列表及其元素在内存中都有不同的位置 。因为我们知道列表是可变的,所以我们可以改变其元素的值 。让我们这样做,看看它如何影响:
Python中的数据结构

文章插图
 
列表的位置没有改变,但元素的位置改变了 。这意味着为元素创建了一个新对象并保存在列表中 。这就是可变的意思 。可变对象可以在创建后更改其状态或内容,但不可变对象不能这样做 。
但是我们可以调用元组伪不可变,因为即使它们是不可变的,它们也可以包含其值可以修改的可变对象!
Python中的数据结构

文章插图
 
从上面的示例中可以看到,我们能够更改元组中包含的不可变对象list的值 。
元组赋值元组打包和解包是一些有用的操作,你可以执行这些操作来将值赋给单行中另一个元组 。
当我们制造元组时,我们已经看到了元组的打包 。元组解包与打包相反 。
Python中的数据结构

文章插图
 
它对于在一行中交换值非常有用 。老实说,这是让我对Python感到兴奋的第一件事,能够用这么少的代码做这么多事情!
更改元组值虽然我说过元组值不能更改,但实际上可以通过使用list()将其转换为列表来对其进行更改 。完成更改后,可以再次使用tuple()将其转换回元组 。
Python中的数据结构

文章插图
 
然而,这种更改非常昂贵,因为它需要复制元组 。但是,当你不希望其他人更改数据结构的内容时,元组就派上了用场 。
数据结构3:Python中的字典Dictionary是另一种Python数据结构,用于存储不可变但无序的异构对象 。这意味着当你试图访问这些元素时,它们的顺序可能与你插入它们的顺序不完全相同 。
但是,使词典与列表区别开来的是元素在其中的存储方式 。字典中的元素是通过它们的键值而不是它们的索引来访问的,正如我们在列表中所做的那样 。所以字典包含键值对,而不仅仅是单个元素 。
生成词典字典是通过{}括号内写入键和值生成的 。每个键值对用逗号分隔:
Python中的数据结构

文章插图
 
使用键,我们可以轻松提取关联值:
Python中的数据结构

文章插图
 
这些键是独一无二的 。但是,即使字典中有多个项具有相同的键,项的值为最后一个键关联的值:
Python中的数据结构

文章插图
 
字典对于快速访问项非常有用,因为与列表和元组不同,字典不必遍历所有找到值的项 。字典使用哈希提高性能 。
访问键和值你可以使用 keys() 方法从字典访问键,使用values()方法访问值 。我们可以使用for循环查看它们,也可以使用list()将它们转换为列表:
Python中的数据结构

文章插图
 
我们甚至可以使用items()方法同时访问这些值,该方法返回字典中每个元素的相应键值对 。
Python中的数据结构

文章插图
 
数据结构4:Python中的集合有时不希望在列表或元组中多次出现同一个元素 。在这里,你可以使用集合数据结构 。Set是一个无序但可变的元素集合,它只包含唯一的值 。
Python中的数据结构

文章插图
 
你将看到这些值的顺序与在集合中输入的顺序不同 。这是因为集合是无序的 。
从集合中添加和移除元素要向集合中添加值,请使用add()方法 。它允许你添加除可变对象以外的任何值:
Python中的数据结构

文章插图
 
要从集合中移除值,有两个选项可供选择: