首页 > 编程语言 >Python数据结构解析:从基本语法到实战应用,提升代码效率与性能

Python数据结构解析:从基本语法到实战应用,提升代码效率与性能

时间:2024-06-08 21:58:19浏览次数:38  
标签:Python list 列表 语法 time print 数据结构 my

基本语法

Python 提供了多种内置的数据结构,包括列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)等。这些数据结构具有不同的特点和用途,可以根据需求选择合适的数据结构。

1. 列表(List)

列表是 Python 中最常用的数据结构之一,用于存储一系列元素,可以是不同类型的数据。列表使用方括号 [] 来表示,元素之间用逗号 , 分隔。

# 创建一个列表
my_list = [1, 2, 3, 'hello', True]
2. 元组(Tuple)

元组是与列表类似的数据结构,但是元组中的元素不可变,即不能修改。元组使用圆括号 () 来表示,元素之间用逗号 , 分隔。

# 创建一个元组
my_tuple = (1, 2, 3, 'hello', True)
3. 集合(Set)

集合是一种无序且元素不重复的数据结构,用于存储唯一的元素。集合使用大括号 {} 来表示,元素之间用逗号 , 分隔。

# 创建一个集合
my_set = {1, 2, 3, 'hello', True}
4. 字典(Dictionary)

字典是一种键值对的数据结构,用于存储映射关系。字典使用大括号 {} 来表示,每个键值对之间用冒号 : 分隔,键和值之间用逗号 , 分隔。

# 创建一个字典
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}

常用命令

Python 提供了丰富的内置函数和方法来操作数据结构,常用命令包括:

  • 增加元素
    • 列表:append(), extend(), insert()
    • 字典:update()
  • 删除元素
    • 列表:remove(), pop()
    • 字典:pop(), del
  • 查询元素
    • 列表:index(), count()
    • 字典:get(), keys(), values(), items()
  • 其他操作
    • 列表:sort(), reverse(), copy()
    • 集合:union(), intersection(), difference()

示例

示例 1:列表操作
# 创建一个列表
my_list = [1, 2, 3, 4]

# 添加元素
my_list.append(5)
print(my_list)  # 输出:[1, 2, 3, 4, 5]

# 删除元素
my_list.remove(3)
print(my_list)  # 输出:[1, 2, 4, 5]

# 查询元素
print(my_list.index(4))  # 输出:2
示例 2:字典操作
# 创建一个字典
my_dict = {'name': 'Alice', 'age': 30}

# 添加元素
my_dict['city'] = 'New York'
print(my_dict)  # 输出:{'name': 'Alice', 'age': 30, 'city': 'New York'}

# 删除元素
del my_dict['age']
print(my_dict)  # 输出:{'name': 'Alice', 'city': 'New York'}

# 查询元素
print(my_dict.get('name'))  # 输出:Alice

应用场景

Python 数据结构在实际开发中应用广泛,常见场景包括:

数据存储和处理

数据结构在 Python 中广泛用于存储和处理各种数据。下面是一些常见的应用场景:

示例代码:

# 存储用户信息的字典
user = {
    'username': 'john_doe',
    'email': '[email protected]',
    'age': 30,
    'is_active': True
}

# 存储配置信息的字典
config = {
    'debug_mode': False,
    'max_connections': 100,
    'timeout': 30
}

# 存储日志记录的列表
logs = [
    {'timestamp': '2024-06-01 10:30:00', 'message': 'User logged in'},
    {'timestamp': '2024-06-02 11:45:00', 'message': 'File uploaded'},
    {'timestamp': '2024-06-03 12:00:00', 'message': 'Error: Connection timed out'}
]
算法和数据分析

数据结构是算法和数据分析的基础,通过合适的数据结构可以更高效地实现算法和分析任务。

示例代码:

# 使用列表存储数据,计算平均值
data = [10, 20, 30, 40, 50]
average = sum(data) / len(data)
print("Average:", average)

# 使用字典存储数据,统计单词出现次数
text = "This is a sample text. This text contains some words."
word_count = {}
for word in text.split():
    word_count[word] = word_count.get(word, 0) + 1
print("Word count:", word_count)
Web 开发

在 Web 开发中,数据结构用于存储请求参数、数据库查询结果、页面内容等,帮助构建网站和 Web 应用。

示例代码:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 存储用户信息的字典
users = {
    '1': {'username': 'john_doe', 'email': '[email protected]'},
    '2': {'username': 'jane_smith', 'email': '[email protected]'}
}

# 获取用户信息
@app.route('/user/<user_id>', methods=['GET'])
def get_user(user_id):
    return jsonify(users.get(user_id, {}))

# 添加用户信息
@app.route('/user', methods=['POST'])
def add_user():
    user_data = request.json
    user_id = str(len(users) + 1)
    users[user_id] = user_data
    return jsonify({'message': 'User added successfully', 'user_id': user_id})

if __name__ == '__main__':
    app.run(debug=True)
游戏开发

游戏开发中需要处理大量的数据和对象,使用合适的数据结构可以提高游戏性能和开发效率。

示例代码:

class Player:
    def __init__(self, name, level):
        self.name = name
        self.level = level

class GameWorld:
    def __init__(self):
        self.players = []

    def add_player(self, player):
        self.players.append(player)

    def remove_player(self, player):
        self.players.remove(player)

# 创建游戏世界
world = GameWorld()

# 添加玩家
player1 = Player('Alice', 5)
player2 = Player('Bob', 3)
world.add_player(player1)
world.add_player(player2)

# 移除玩家
world.remove_player(player1)

# 打印剩余玩家
print("Remaining players:")
for player in world.players:
    print(player.name)

注意事项

可变与不可变

在 Python 中,可变数据结构是指在创建后可以修改其内容的数据结构,例如列表、字典和集合。而不可变数据结构是指创建后不能修改其内容的数据结构,例如元组。

示例代码:

# 可变数据结构:列表
my_list = [1, 2, 3]
my_list.append(4)
print("Mutable list:", my_list)

# 不可变数据结构:元组
my_tuple = (1, 2, 3)
# 尝试修改元组会导致错误
# my_tuple[0] = 10
print("Immutable tuple:", my_tuple)
内存占用

不同的数据结构在内存占用方面有所不同。一般来说,可变数据结构会占用更多的内存,因为它们需要额外的空间来存储指向内存地址的指针,以便进行修改操作。相比之下,不可变数据结构在创建后不需要额外的空间来存储指针,因此通常占用更少的内存。

示例代码:

import sys

# 列表和元组的内存占用比较
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)

print("Memory usage of list:", sys.getsizeof(my_list), "bytes")
print("Memory usage of tuple:", sys.getsizeof(my_tuple), "bytes")
数据访问效率

不同的数据结构在数据访问效率方面有所不同。一般来说,列表和字典的数据访问效率较高,因为它们支持随机访问,而集合和元组的数据访问效率较低。

示例代码:

# 列表和元组的数据访问效率比较
import time

# 创建一个包含 1000000 个元素的列表和元组
my_list = list(range(1000000))
my_tuple = tuple(range(1000000))

# 测试列表的数据访问时间
start_time = time.time()
for _ in range(10000):
    _ = my_list[999999]
end_time = time.time()
print("Time taken to access list element:", end_time - start_time, "seconds")

# 测试元组的数据访问时间
start_time = time.time()
for _ in range(10000):
    _ = my_tuple[999999]
end_time = time.time()
print("Time taken to access tuple element:", end_time - start_time, "seconds")

总结

Python 提供了丰富的数据结构和操作方法,适用于各种场景下的数据存储和处理需求。熟练掌握各种数据结构的基本语法,有助于提高代码的质量和效率,提升开发效率和用户体验。

标签:Python,list,列表,语法,time,print,数据结构,my
From: https://blog.csdn.net/wenbingy/article/details/139426114

相关文章

  • vue3 setup 语法糖!
    前言Vue.js是一款流行的JavaScript框架,用于构建用户界面。它提供了一种简洁的方式来创建可维护和可测试的前端应用程序。Vue.js的核心库只关注视图层,易于上手,同时与其他库或现有项目整合也非常方便。Vue也完全能够为复杂的单页应用提供驱动。在Vue3中,引入了<script......
  • Markdown 常用数学符号和语法
    GreekandHebrewlettersSymbolCommandSymbolCommandSymbolCommandSymbolCommandSymbolCommandSymbolCommandα\alphaκ\kappaψ\psiϜ\digammaΔ\DeltaΘ\Thetaβ\betaλ\lambdaρ\rhoε\varepsilonΓ\GammaΥ\Upsilonχ\......
  • 0004python金融量化初入门
    >Date:2024.04.24>Keywords:在量化投资(证券和比特币)开源项目里,全球star数排名前10位里面,有7个是Python实现的。从数据获取到策略回测再到交易,覆盖了整个业务链。而全球注册用户数最多的商业量化平台Uqer优矿,也同样是基于Python实现和提供服务的。国内后来的其他量化平台,例如ricequ......
  • 【python】OpenCV—Blob Detection(11)
    学习来自OpenCV基础(10)使用OpenCV进行Blob检测文章目录1、cv2.SimpleBlobDetector_create中文文档2、默认parameters3、配置parameters附录——cv2.drawKeypoints1、cv2.SimpleBlobDetector_create中文文档cv2.SimpleBlobDetector_create是OpenCV库中用于创......
  • 100天精通风控建模(原理+Python实现)——第28天:风控建模中逻辑回归是什么?主要应用在
    在当今风险多变的环境下,风控建模已经成为金融机构、企业等组织的核心工作之一。在各大银行和公司都实际运用于业务,用于营销和风险控制等。本文以视频的形式阐述风控建模中逻辑回归是什么,主要应用在哪些方面。并提供风控建模原理和Python实现文章清单。  之前已经阐述了1......
  • python 多任务之多进程
    多任务优势多个任务同时执行可以大大提高程序执行效率,可以充分利用CPU资源,提高程序的执行效率概念是指在同一时间内执行多个任务多进程概念进程(process)是资源分配的最小单位,他是操作系统进行资源分配和调度运行的基本单位,比如:一个正在运行的程序就是一个进程,如QQ,微信等......
  • 运筹学练习Python精解——运输和指派问题
    练习1如下表的运输问题中总需要量超过总供应量(方框中的数字是单位运费)。假定对销地\(B_1\)、\(B_2\)和\(B_3\)未满足需要量的单位罚款成本是5、3和2,试建立该问题的数学模型,并探讨能否将其转变为产销平衡运输问题。产地\销地B1B2B3供应量A151710A264......
  • Python【cv2:读取图片时报错】
    写在前面:opencv库安装在终端用pipinstall安装opencv-python库建议使用国内清华源的镜像去安装,加参数-ihttps://pypi.tuna.tsinghua.edu.cn/simple代码如下:pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpleopencv-python报错一我一开始直接用cv2.imread(p......
  • Python学习日记Day1
    目录一、Python的安装二、输出print()1,输出单变量后换行——print(*)2,连续输出多个变量不换行——print(*,*,*,*,*)用英文逗号分离3,使用ASCII码进行输出——借助chr()函数4,使用Unicode码进行输出——借助ord()函数 5,ASCII码与Unicode码的相互转换6,使用print()函数将内......
  • Python基础操作之模块 -- pandas之groupby函数
            groupby函数是pandas库中一个非常强大的功能,它允许你根据一个或多个列的值对DataFrame或Series进行分组,并对每个组执行各种聚合操作。目录示例详解1.导入必要的库和创建DataFrame2.使用groupby函数进行分组3.遍历分组并查看内容4.对分组执行聚合操作......