打开网易新闻 查看更多图片

Python中的一切都是对象。每个对象都有自己的数据属性和与之关联的方法。为了有效和恰当地使用一个对象,我们应该知道如何与它们交互。

列表、元组和集合是三种重要的对象类型。它们的共同点是它们都被用作数据结构。为了创建健壮且性能良好的产品,必须非常了解编程语言的数据结构。

在这篇文章中,我们将看到这些结构如何收集和存储数据,以及我们可以对它们进行的操作。我们将看到它们之间的异同。

让我们先简要解释一下这些对象是什么。然后我们将对每个例子进行详细说明。

  • List是Python中的一个内置数据结构。它用方括号中的数据点集合表示。列表可用于存储任何数据类型或不同的数据类型。列表是可变的,这也是它们如此常用的原因之一。
  • 元组是用逗号分隔并用括号括起来的值的集合。与列表不同,元组是不可变的。不变性可以看作元组的识别特征。
  • Set是不同的不可变对象的无序集合。集合包含唯一的元素。虽然集合是可变的,但是集合的元素必须是不可变的。没有与集合的元素相关联的顺序。因此,它不像列表那样支持索引或切片。

我们现在对这些容器有了基本的了解。下面的示例将介绍如何与这些对象交互。

1.列表与集合

我们可以根据字符串中的字符创建列表或集合。要使用的函数是list和set函数。

text="HelloWorld!"print(list(text))['H','e','l','l','o','','W','o','r','l','d','!']print(set(text)){'H','W','o','','l','r','!','e','d'}

结果列表和集合对象的区别:

  • 列表包含所有字符,而集合只包含唯一字符。
  • 列表是根据字符串中字符的顺序排序的。集合的元素并没有顺序。

2.列表与集合索引

在前面的例子中,我们看到集合不具有顺序。因此,我们不能像处理列表那样对集合进行切片或索引。

text="HelloWorld!"list_a=list(text)print(list_a[:2])['H','e']set_a=set(text)print(set_a[:2])TypeError:'set'objectisnotsubscriptable

对集合进行切片或索引会引发类型错误,因为这是与集合对象类型的属性相关的问题。

3.列表与元组

列表和元组的区别在于易变性。与列表不同,元组是不可变的。例如,我们可以向列表添加项,但元组不行。

list_a=[1,2,3,4]list_a.append(5)print(list_a)[1,2,3,4,5]tuple_a=(1,2,3,4)tuple_a.append(5)AttributeError:'tuple'objecthasnoattribute'append'

更改集合的函数(例如append、remove、extend、pop)不适用于元组。

4.元组中的可变元素

不变性可能是元组最具识别性的特征。元组确定后不能改变。

tuple_a=(3,5,'x',5)tuple_a[0]=7#错误

虽然元组是不可变的,但是它们可以包含可变的元素,比如列表或集合。

tuple_a=([1,3],'a','b',8)tuple_a[0][0]=99print(tuple_a)([99,3],'a','b',8)

5.Del函数

Del函数代表delete,因此它用于从集合中删除项。它接受要删除的项的索引。

由于集合是无序的,因此它们中没有项的索引。因此,del函数不能用于集合。

list_a=[1,2,3,4]del(list_a[0])print(list_a)[2,3,4]

注意:有两种方法可以索引列表:

  • 自始至终:0,1,2,3
  • 从尾到头:-1,-2,-3

6.Remove函数

与del函数不同,remove函数可用于列表和集合。我们传递要删除的项而不是其索引。

list_a=['a','b',3,6]list_a.remove('a')print(list_a)['b',3,6]set_a={'a','b',3,6}set_a.remove('a')print(set_a){3,6,'b'}

7.Discard函数

Discard也可用于从集合中移除项。但是列表没有discard属性。

当我们试图删除一个不在集合中的项目时,我们会观察到“remove”和“Discard”之间的区别。Remove将引发一个错误,但discard不会发生任何操作。

#remove