Python数据结构入门的5个步骤

2023年09月04日 由 camellia 发表 299 0

本教程涵盖了Python的基本数据结构—列表、元组、字典和集合。在5个步骤中学习它们的特点、用例和实际示例。


Python数据结构简介


无论你选择使用哪种编程语言来学习编程,你会发现有一些主要主题是你需要学习的。这些主题大致可以按顺序分为以下几个:语法(语言的词汇);命令(将词汇组合成有用的方式);流程控制(我们如何指导命令的执行顺序);算法(解决具体问题的步骤……为什么这个词变得如此困扰呢?);最后,数据结构(我们在算法执行期间用于数据操作的虚拟存储库,它们是一系列步骤)。


基本上,如果你想要通过将一系列命令组合到算法的步骤中来实现问题的解决方案,那么在某个时候,数据将需要被处理,而数据结构将成为必需品。这些数据结构提供了一种有效组织和存储数据的方式,对于创建快速、模块化的代码以及能够执行有用功能并具有良好扩展性非常重要。Python作为一种特定的编程语言,具有一系列内置的数据结构。


本教程将重点介绍这四种基本的Python数据结构:


  • 列表—有序、可变、允许重复元素。适用于存储数据序列。
  • 元组—有序、不可变、允许重复元素。把它们当作不可变列表。
  • 字典—无序、可变、通过键值对进行映射。适用于以键值格式存储数据。
  • 集合—无序、可变、包含唯一元素。适用于成员测试和消除重复项。


除了基本数据结构外,Python还提供了更高级的结构,如堆、队列和链表,可以进一步提升你的编码能力。这些基于基础数据结构构建的高级结构可以实现更复杂的数据处理,并常用于专门的场景。但是,在这里你并不受限制,你可以将所有现有的结构用作实现自己结构的基础。然而,列表、元组、字典和集合的理解仍然是至关重要的,因为它们是更高级数据结构的基础。


本教程旨在提供对这些核心结构的清晰而简明的理解。当你开始Python之旅时,以下部分将引导你了解基本概念和实际应用。从创建和操作列表到利用集合的独特功能,本教程将为你提供在编码中取得成功所需的技能。


步骤1:在Python中使用列表


什么是 Python 中的列表?


Python中的列表是一种有序、可变的数据类型,可以存储各种对象,允许存在重复元素。列表是通过使用方括号[]来定义的,其中元素用逗号分隔。

例如:

fibs = [0, 1, 1, 2, 3, 5, 8, 13, 21]

列表非常有用于组织和存储数据序列。


创建列表


列表可以包含不同的数据类型,比如字符串、整数、布尔值等。例如:

mixed_list = [42, "Hello World!", False, 3.14159]

操作列表


可以访问、添加、修改和删除列表中的元素。例如:

# Access 2nd element (indexing begins at '0')
print(mixed_list[1])

# Append element
mixed_list.append("This is new")

# Change element
mixed_list[0] = 5

# Remove last element
mixed_list.pop(0)

有用的列表方法


一些方便的内置列表方法包括:


  • sort()—在原地对列表进行排序
  • append()—将元素添加到列表末尾
  • insert()—在指定索引处插入元素
  • pop()—删除指定索引处的元素
  • remove()—删除第一个出现的指定值
  • reverse()—原地反转列表


列表的实际示例

# Create shopping cart as a list
cart = ["apples", "oranges", "grapes"]

# Sort the list
cart.sort()

# Add new item
cart.append("blueberries")

# Remove first item
cart.pop(0)

print(cart)

输出:

['grapes', 'oranges', 'blueberries']

步骤2:了解 Python 中的元组

什么是元组?

元组是 Python 中的另一种序列数据类型,类似于列表。但是,与列表不同,元组是不可变的,这意味着它们的元素一旦创建就无法更改。它们通过将元素括在括号中来定义。( )
# Defining a tuple
my_tuple = (1, 2, 3, 4)

何时使用元组?


元组通常用于不应修改的项的集合。元组比列表快,这使得它们非常适合只读操作。一些常见的用例包括:

  • 存储常量或配置数据
  • 函数返回具有多个组件的值
  • 字典键,因为它们是可散列的


访问元组元素

 

访问元组中的元素的方式与访问列表元素的方式类似。 索引和切片的工作方式相同。

# Accessing elements
first_element = my_tuple[0]
sliced_tuple = my_tuple[1:3]

元组上的操作

 

因为元组是不可变的,所以许多列表操作都适用(或不适用)。 不过,你仍然可以执行一些操作:append()remove()


串联:使用运算符合并元组。+

concatenated_tuple = my_tuple + (5, 6)
重复:使用运算符重复元组。*
repeated_tuple = my_tuple * 2
成员资格:检查元组中是否存在带有关键字的元素。in
exists = 1 in my_tuple
元组方法

与列表相比,元组具有较少的内置方法,因为它们不可变。一些有用的方法包括:

计数():计算特定元素的出现次数。
count_of_ones = my_tuple.count(1)
索引():查找值第一次出现的索引。
index_of_first_one = my_tuple.index(1)
元组打包和解包

元组打包和解包是 Python 中方便的功能:

打包:为单个元组分配多个值。
packed_tuple = 1, 2, 3
解包:将元组元素分配给多个变量。
a, b, c = packed_tuple
不可变但不严格
 
虽然元组本身是不可变的,但它们可以包含可变元素,如列表。
# Tuple with mutable list
complex_tuple = (1, 2, [3, 4])
请注意,虽然您无法更改元组本身,但您可以修改其中的可变元素。

步骤3:掌握 Python 中的字典

什么是 Python 中的字典?

Python 中的字典是一种无序、可变的数据类型,用于存储唯一键到值的映射。字典是用大括号编写的,由逗号分隔的键值对组成。{ }

例如:
student = {"name": "Michael", "age": 22, "city": "Chicago"}
字典对于以结构化方式存储数据和按键访问值非常有用。

创建字典

字典键必须是不可变的对象,如字符串、数字或元组。字典值可以是任何对象。
student = {"name": "Susan", "age": 23}

prices = {"milk": 4.99, "bread": 2.89}
操作字典

可以通过键访问、添加、更改和删除元素。
# Access value by key
print(student["name"])

# Add new key-value
student["major"] = "computer science"

# Change value
student["age"] = 25

# Remove key-value
del student["city"]

有用的字典方法
 
一些有用的内置方法包括:

  • keys()—返回键列表
  • values()—返回值列表
  • items()—返回(键、值)元组
  • get()—返回键的值,避免键错误
  • pop()—删除键并返回值
  • update()—添加多个键值


    字典的实际示例
    scores = {"Francis": 95, "John": 88, "Daniel": 82}

    # Add new score
    scores["Zoey"] = 97

    # Remove John's score
    scores.pop("John")

    # Get Daniel's score
    print(scores.get("Daniel"))

    # Print all student names
    print(scores.keys())

    步骤4:在 Python 中探索集合

    什么是 Python 中的集合?

    Python 中的集合是唯一、不可变对象的无序、可变集合。集合是用大括号编写的,但与字典不同,它没有键值对。{ }

    例如:
    numbers = {1, 2, 3, 4}
    集合对于成员资格测试、消除重复项和数学运算非常有用。

    创建集合


    可以通过将集合传递给构造函数来从列表创建集合:set()
    my_list = [1, 2, 3, 3, 4]
    my_set = set(my_list) # {1, 2, 3, 4}
    集合可以包含混合数据类型,如字符串、布尔值等。

    操作集合

    可以在集合中添加和删除元素。
    numbers.add(5) 

    numbers.remove(1)
    有用的集合操作
     
    一些有用的集合操作包括:

    • union()—两组的返回并集
    • intersection()—返回集合的交集
    • difference()—返回集合之间的差异
    • symmetric_difference()—返回对称差分

    使用集合的实际示例
    A = {1, 2, 3, 4}
    B = {2, 3, 5, 6}

    # Union - combines sets
    print(A | B)

    # Intersection
    print(A & B)

    # Difference
    print(A - B)

    # Symmetric difference
    print(A ^ B)

    步骤 5:比较列表、字典和集合

    特性比较
     
    以下是我们在本教程中提到的四种 Python 数据结构的简要比较。

    222

    何时使用每个数据结构

    将此视为在特定情况下首先转向哪种结构的软指南。

      • 对基于序列的有序数据使用列表。对堆栈/队列很有用。
      • 将元组用于有序的、不可变的序列。当你需要不应更改的固定元素集合时很有用。
      • 对键值数据使用字典。用于存储相关属性。
      • 使用集合来存储唯一元素和数学运算。

      使用所有四种数据结构的实际示例
       
      让我们看一下这些结构如何在一个比单行稍微复杂的示例中协同工作。
      # Make a list of person names
      names = ["John", "Mary", "Bob", "Mary", "Sarah"]

      # Make a tuple of additional information (e.g., email)
      additional_info = ("john@example.com", "mary@example.com", "bob@example.com", "mary@example.com", "sarah@example.com")

      # Make set to remove duplicates
      unique_names = set(names)

      # Make dictionary of name-age pairs
      persons = {}
      for name in unique_names:
      persons[name] = random.randint(20,40)

      print(persons)
      输出:
      {'John': 34, 'Bob': 29, 'Sarah': 25, 'Mary': 21}
      此示例使用一个列表来存储有序序列,一个元组用于存储其他不可变信息,一个集合用于删除重复项,以及一个字典来存储键值对。

      总结

      在这个全面的教程中,我们深入探讨了 Python 中的基础数据结构,包括列表、元组、字典和集合。这些结构构成了 Python 编程的构建块,为数据存储、处理和操作提供了框架。了解这些结构对于编写高效且可扩展的代码至关重要。从使用列表操作序列,到使用字典中的键值对组织数据,以及确保集合的唯一性,这些基本工具在数据处理方面提供了极大的灵活性。

      正如我们通过代码示例看到的那样,这些数据结构可以通过各种方式组合来解决复杂的问题。通过利用这些数据结构,你可以打开数据分析、机器学习等领域广泛可能性的大门。
      文章来源:https://www.kdnuggets.com/5-steps-getting-started-python-data-structures
      欢迎关注ATYUN官方公众号
      商务合作及内容投稿请联系邮箱:bd@atyun.com
      评论 登录
      热门职位
      Maluuba
      20000~40000/月
      Cisco
      25000~30000/月 深圳市
      PilotAILabs
      30000~60000/年 深圳市
      写评论取消
      回复取消