首页 > 后端开发 > Python教程 > Python 教程 - ata 结构

Python 教程 - ata 结构

DDD
发布: 2024-12-23 19:36:15
原创
261 人浏览过

介绍

数据结构是组织数据的工具。不仅仅是为了存储,也是为了解决一些问题。 Python中有一些数据结构,包括列表、字典、元组和集合。

列表

列表是一种使用索引顺序存储项目的数据结构。这是列表数据结构的图示。

Python Tutorial - ata Structure

在 Python 中创建列表的方法有很多种。

  1. 直接在列表内初始化值。
items = [1,2,3,4]
登录后复制
登录后复制
登录后复制
登录后复制
  1. 初始化一个空列表。
items = []
登录后复制
登录后复制
登录后复制
登录后复制

可以通过索引直接访问列表中的项目。

items = [1,2,3,4,5]

# access item at index 2
result = items[2]

print(result) # returns 3
登录后复制
登录后复制
登录后复制
登录后复制

可以使用 for 循环检索列表中的所有项目。这是一个例子。

# create a new list
items = [1,2,3,4,5]

# retrieve each item inside a list
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

输出

1
2
3
4
5
登录后复制
登录后复制
登录后复制
登录后复制

根据上面的代码,名为 items 的列表是使用指定的 item 创建的。使用 for 循环检索每个项目。

列出基本操作

append() 函数将一个新项目添加到列表中。这是append() 用法的示例。

# create empty list
shopping_list = []

# add some items
shopping_list.append("apple")
shopping_list.append("milk")
shopping_list.append("cereal")

# retrieve all items
for item in shopping_list:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

输出

apple
milk
cereal
登录后复制
登录后复制
登录后复制
登录后复制

append() 如下图所示。

Python Tutorial - ata Structure

除了append()函数之外,insert()函数在特定索引中添加一个新项目。这是一个例子。

items = ["apple","banana","mango","coffee"]

# add new item at index 1
items.insert(1,"cereal")

# retrieve all items
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

输出

apple
cereal
banana
mango
coffee
登录后复制
登录后复制
登录后复制
登录后复制

insert() 如下图所示。

Python Tutorial - ata Structure

更新列表中的项目非常简单。只需指定项目的索引,然后使用更新的项目更改它。

# create a list
drinks = ["milkshake","black tea","banana milk","mango juice"]

# update value at index 2
drinks[2] = "chocolate milk"

print(f"value at index 2: {drinks[2]}")
登录后复制
登录后复制
登录后复制
登录后复制

输出

value at index 2: chocolate milk
登录后复制
登录后复制
登录后复制
登录后复制

remove() 函数从列表中删除一个项目。这是一个例子。

items = ["apple","banana","mango","coffee"]

# remove "mango"
items.remove("mango")

# remove item at index 1
items.remove(items[1])

print("after removed")
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

输出

after removed
apple
coffee
登录后复制
登录后复制
登录后复制
登录后复制

可以通过指定列表的起始索引和结束索引来选择列表中的项目。这是在列表中选择项目的基本结构。

list_name[start:end]
登录后复制
登录后复制
登录后复制
登录后复制

项目是从开始索引到但不包括结束索引选择的。这是在列表中选择项目的示例。

items = ["apple","mango","papaya","coconut","banana"]

# select items from index 1 up to but not including index 3
selected = items[1:3]

# show all items
print(f"all items: {items}")

# show the selected items
print(f"selected: {selected}")
登录后复制
登录后复制
登录后复制

输出

all items: ['apple', 'mango', 'papaya', 'coconut', 'banana']
selected: ['mango', 'papaya']
登录后复制
登录后复制
登录后复制

列表理解

列表理解是一种创建列表的“函数式”方式。为了理解列表理解,让我们看一个使用迭代方法创建包含偶数值的列表的示例。

evens = []

for i in range(1,11):
    evens.append(i*2)

print(evens)
登录后复制
登录后复制
登录后复制

输出

items = [1,2,3,4]
登录后复制
登录后复制
登录后复制
登录后复制

基于上面的代码,偶数是使用 for 循环的迭代方法生成的。上面的例子也可以使用列表理解来实现。这是使用列表理解生成偶数的示例。

items = []
登录后复制
登录后复制
登录后复制
登录后复制

输出

items = [1,2,3,4,5]

# access item at index 2
result = items[2]

print(result) # returns 3
登录后复制
登录后复制
登录后复制
登录后复制

基于上面的代码,列表理解方法提供了更简洁的代码,并且与之前的迭代方法相同的结果。

列表推导式可以与 if 分支一起使用。在此示例中,列表理解用于根据特定条件过滤某些值。

# create a new list
items = [1,2,3,4,5]

# retrieve each item inside a list
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

输出

1
2
3
4
5
登录后复制
登录后复制
登录后复制
登录后复制

这是上一个示例的迭代版本。

# create empty list
shopping_list = []

# add some items
shopping_list.append("apple")
shopping_list.append("milk")
shopping_list.append("cereal")

# retrieve all items
for item in shopping_list:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

多维列表

列表可以像矩阵一样以多维方式存储。这是声明用于存储数字矩阵的多维列表的示例。

apple
milk
cereal
登录后复制
登录后复制
登录后复制
登录后复制

可以使用双方括号 ([x][y]) 访问该项目,方法是指定 x 表示主列表的索引,而 y 表示嵌套列表内项目的索引。这是数字矩阵的图示。

Python Tutorial - ata Structure

多维列表中的项目可以通过使用嵌套的 for 循环来检索。

items = ["apple","banana","mango","coffee"]

# add new item at index 1
items.insert(1,"cereal")

# retrieve all items
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

输出

apple
cereal
banana
mango
coffee
登录后复制
登录后复制
登录后复制
登录后复制

字典

字典是一种将记录存储为键值对的数据结构。每个键必须是唯一的,同时允许重复值。这说明了字典的数据结构:

Python Tutorial - ata Structure

创建字典的方法有很多种:

  1. 创建一个包含初始化记录的字典。
# create a list
drinks = ["milkshake","black tea","banana milk","mango juice"]

# update value at index 2
drinks[2] = "chocolate milk"

print(f"value at index 2: {drinks[2]}")
登录后复制
登录后复制
登录后复制
登录后复制
  1. 创建一个空字典。
value at index 2: chocolate milk
登录后复制
登录后复制
登录后复制
登录后复制

可以使用for循环检索字典中的所有记录。这是一个例子。

items = ["apple","banana","mango","coffee"]

# remove "mango"
items.remove("mango")

# remove item at index 1
items.remove(items[1])

print("after removed")
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

输出

after removed
apple
coffee
登录后复制
登录后复制
登录后复制
登录后复制

字典基本操作

要在字典中插入新项目,请指定该项目的键值对。确保密钥是唯一的。

list_name[start:end]
登录后复制
登录后复制
登录后复制
登录后复制

这是在字典中插入新项目的示例。

items = ["apple","mango","papaya","coconut","banana"]

# select items from index 1 up to but not including index 3
selected = items[1:3]

# show all items
print(f"all items: {items}")

# show the selected items
print(f"selected: {selected}")
登录后复制
登录后复制
登录后复制

输出

all items: ['apple', 'mango', 'papaya', 'coconut', 'banana']
selected: ['mango', 'papaya']
登录后复制
登录后复制
登录后复制

要更新字典中的项目,请指定项目的键,然后插入更新的值。

evens = []

for i in range(1,11):
    evens.append(i*2)

print(evens)
登录后复制
登录后复制
登录后复制

输出

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
登录后复制
登录后复制
登录后复制

字典中的键和值可以使用不同的方法独立访问。

evens = [x*2 for x in range(1,11)] # using list comprehension
print(evens)
登录后复制
登录后复制

输出

items = [1,2,3,4]
登录后复制
登录后复制
登录后复制
登录后复制

pop() 方法根据给定的键从字典中删除项目。

items = []
登录后复制
登录后复制
登录后复制
登录后复制

输出

items = [1,2,3,4,5]

# access item at index 2
result = items[2]

print(result) # returns 3
登录后复制
登录后复制
登录后复制
登录后复制

clear() 方法会删除字典中的所有项目。

# create a new list
items = [1,2,3,4,5]

# retrieve each item inside a list
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

输出

1
2
3
4
5
登录后复制
登录后复制
登录后复制
登录后复制

元组

元组是一种不可变的数据结构,用于存储许多值。元组可以包含可变值。创建新元组有两种方法。

  1. 创建一个具有指定值的元组。
# create empty list
shopping_list = []

# add some items
shopping_list.append("apple")
shopping_list.append("milk")
shopping_list.append("cereal")

# retrieve all items
for item in shopping_list:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

输出

apple
milk
cereal
登录后复制
登录后复制
登录后复制
登录后复制
  1. 创建一个空元组。
items = ["apple","banana","mango","coffee"]

# add new item at index 1
items.insert(1,"cereal")

# retrieve all items
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

元组基本操作

元组是不可变的,这意味着它的值一旦创建就无法更改或更新。

apple
cereal
banana
mango
coffee
登录后复制
登录后复制
登录后复制
登录后复制

可以使用“元组解包”检索元组中的值(此概念类似于 JavaScript 中的对象解构)。

解包时,解包值的大小必须等于元组的大小。

# create a list
drinks = ["milkshake","black tea","banana milk","mango juice"]

# update value at index 2
drinks[2] = "chocolate milk"

print(f"value at index 2: {drinks[2]}")
登录后复制
登录后复制
登录后复制
登录后复制

输出

value at index 2: chocolate milk
登录后复制
登录后复制
登录后复制
登录后复制

集合是一种无序的数据结构,仅包含唯一的项。创建集合的方法有很多种。

items = ["apple","banana","mango","coffee"]

# remove "mango"
items.remove("mango")

# remove item at index 1
items.remove(items[1])

print("after removed")
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

可以使用 set() 函数创建空集。

after removed
apple
coffee
登录后复制
登录后复制
登录后复制
登录后复制

集合数据结构自动删除重复值。

list_name[start:end]
登录后复制
登录后复制
登录后复制
登录后复制

输出

items = ["apple","mango","papaya","coconut","banana"]

# select items from index 1 up to but not including index 3
selected = items[1:3]

# show all items
print(f"all items: {items}")

# show the selected items
print(f"selected: {selected}")
登录后复制
登录后复制
登录后复制

可以使用 for 循环访问集合内的值。

all items: ['apple', 'mango', 'papaya', 'coconut', 'banana']
selected: ['mango', 'papaya']
登录后复制
登录后复制
登录后复制

输出

evens = []

for i in range(1,11):
    evens.append(i*2)

print(evens)
登录后复制
登录后复制
登录后复制

设置基本操作

集合数据结构提供并、交、差、对称差等多种操作。

并集运算返回两个集合中的所有项目。

Python Tutorial - ata Structure

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
登录后复制
登录后复制
登录后复制

输出

evens = [x*2 for x in range(1,11)] # using list comprehension
print(evens)
登录后复制
登录后复制

交集运算返回集合交集中存在的所有项目。

Python Tutorial - ata Structure

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
登录后复制
登录后复制
登录后复制

输出

samples = [12,32,55,10,2,57,66]

result = [s for s in samples if s % 4 == 0] # using list comprehension

print(result)
登录后复制

差异运算返回仅存在于某个集合中的所有项目。

Python Tutorial - ata Structure

[12, 32]
登录后复制

输出

samples = [12,32,55,10,2,57,66]

result = []

for s in samples:
    if s % 4 == 0:
        result.append(s)

print(result)
登录后复制

对称差分运算返回任一集合中存在但不在交集中的所有项目。

Python Tutorial - ata Structure

matrix = [
 [1,2,3],
 [4,5,6],
 [7,8,9],
]
登录后复制

输出

items = [1,2,3,4]
登录后复制
登录后复制
登录后复制
登录后复制

功能介绍

函数是一个包含指令的可调用单元,旨在减少代码重复和组织复杂的任务。有两种类型:void 函数(无返回值)和有返回值的函数。

这是Python中函数的基本结构。

items = []
登录后复制
登录后复制
登录后复制
登录后复制

这是Python中void函数(无返回值)的示例。

items = [1,2,3,4,5]

# access item at index 2
result = items[2]

print(result) # returns 3
登录后复制
登录后复制
登录后复制
登录后复制

输出

# create a new list
items = [1,2,3,4,5]

# retrieve each item inside a list
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

基于上面的代码,创建了名为 hello() 的函数。通过指定函数名后跟括号 () 来调用该函数。

这是有返回值的函数示例。

1
2
3
4
5
登录后复制
登录后复制
登录后复制
登录后复制

输出

# create empty list
shopping_list = []

# add some items
shopping_list.append("apple")
shopping_list.append("milk")
shopping_list.append("cereal")

# retrieve all items
for item in shopping_list:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

基于上面的代码,创建了名为 add() 的函数来对两个数字求和。 add() 函数的返回值存储在 result 变量中。

使用返回值函数时,请确保使用返回值。

Python 中函数的主题将在单独的章节中详细解释。

示例 - 简单的待办事项列表应用程序

让我们创建一个简单的待办事项列表应用程序。该应用程序使用列表作为待办事项的存储,并利用函数来实现更清晰的代码。

第一步是导入 uuid 包并创建一个名为 todos 的列表,用于存储 todo 记录。 uuid 包用作 todo 记录的标识符 (ID)。

apple
milk
cereal
登录后复制
登录后复制
登录后复制
登录后复制

之后,创建一个 view_todos() 函数来检索所有待办事项记录。所有待办事项记录均使用 for 循环检索。

items = ["apple","banana","mango","coffee"]

# add new item at index 1
items.insert(1,"cereal")

# retrieve all items
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

创建一个view_todo()函数,通过指定的ID检索todo记录。在 for 循环内检查每个待办事项记录,以检查当前待办事项 ID 是否等于指定的 ID。如果匹配,则显示待办事项记录。

apple
cereal
banana
mango
coffee
登录后复制
登录后复制
登录后复制
登录后复制

创建一个create_todo()函数来创建一个新的待办事项。 todo 记录表示为带有 id 和 title 字段的字典。

# create a list
drinks = ["milkshake","black tea","banana milk","mango juice"]

# update value at index 2
drinks[2] = "chocolate milk"

print(f"value at index 2: {drinks[2]}")
登录后复制
登录后复制
登录后复制
登录后复制

创建 update_todo() 函数来更新待办事项。在此函数中,todo 记录根据指定的 ID 进行更新。

value at index 2: chocolate milk
登录后复制
登录后复制
登录后复制
登录后复制

创建一个delete_todo()函数来删除一个todo。在此函数中,删除指定ID的todo记录。

items = ["apple","banana","mango","coffee"]

# remove "mango"
items.remove("mango")

# remove item at index 1
items.remove(items[1])

print("after removed")
for item in items:
    print(item)
登录后复制
登录后复制
登录后复制
登录后复制

最后,创建一个名为 display_menu() 的函数来显示应用程序的主菜单。

after removed
apple
coffee
登录后复制
登录后复制
登录后复制
登录后复制

这是完整的代码。

list_name[start:end]
登录后复制
登录后复制
登录后复制
登录后复制

这是应用程序的输出。

Python Tutorial - ata Structure

来源

  • Python 中的数据结构。

希望这篇文章对你学习Python有所帮助。如果您有任何意见,请在评论区告诉我。

以上是Python 教程 - ata 结构的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板