总结:Python语法

Python中的字典、列表和数组是三种常用的数据结构,它们各自有不同的用途和特性。

字典(Dictionary)

字典是一种无序的、可变的数据结构,它存储键值对(key-value pairs)。字典中的每个元素都是一个键值对,键是唯一的。

特性

  • 通过键来访问元素。
  • 键必须是不可变类型,如字符串、数字或元组。
  • 值可以是任何数据类型。
# 创建一个空字典
my_dict = {}# 创建一个包含键值对的字典
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}# 访问字典中的值
print(my_dict['name'])  # 输出: Alice
print(my_dict.get('age'))  # 输出: 25# 更新字典中的值
my_dict['age'] = 26
print(my_dict['age'])  # 输出: 26# 添加新的键值对
my_dict['country'] = 'USA'
print(my_dict)  # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York', 'country': 'USA'}# 删除字典中的键值对
del my_dict['city']
print(my_dict)  # 输出: {'name': 'Alice', 'age': 26, 'country': 'USA'}# 使用pop方法删除并返回键对应的值
popped_value = my_dict.pop('age')
print(popped_value)  # 输出: 26
print(my_dict)  # 输出: {'name': 'Alice', 'country': 'USA'}# 检查字典中是否包含某个键
if 'name' in my_dict:print("Name is present")
else:print("Name is not present")# 遍历字典中的键
for key in my_dict.keys():print(key)# 遍历字典中的值
for value in my_dict.values():print(value)# 遍历字典中的键值对
for key, value in my_dict.items():print(f"{key}: {value}")# 复制字典
dict_copy = my_dict.copy()
print(dict_copy)  # 输出: {'name': 'Alice', 'country': 'USA'}# 清空字典
my_dict.clear()
print(my_dict)  # 输出: {}

列表(List)

列表是一种有序的、可变的数据结构,可以包含任意类型的元素,包括其他列表。

特性

  • 通过索引来访问元素,索引从0开始。
  • 可以包含重复的元素。
  • 支持增加、删除、修改和排序操作。
# 导入必要的库
import random# 创建一个列表
my_list = [1, 2, 3, 'hello', 3.14]# 访问列表中的元素
print(my_list[0])  # 输出: 1
print(my_list[-1])  # 输出: 3.14# 修改列表中的元素
my_list[0] = 'one'
print(my_list)  # 输出: ['one', 2, 3, 'hello', 3.14]# 添加元素到列表末尾
my_list.append('new item')
print(my_list)  # 输出: ['one', 2, 3, 'hello', 3.14, 'new item']# 插入元素到指定位置
my_list.insert(2, 'inserted')
print(my_list)  # 输出: ['one', 2, 'inserted', 3, 'hello', 3.14, 'new item']# 扩展列表
my_list.extend(['apple', 'banana'])
print(my_list)  # 输出: ['one', 2, 'inserted', 3, 'hello', 3.14, 'new item', 'apple', 'banana']# 删除列表中的元素
del my_list[2]
print(my_list)  # 输出: ['one', 2, 3, 'hello', 3.14, 'new item', 'apple', 'banana']# 移除列表中的特定值
my_list.remove('hello')
print(my_list)  # 输出: ['one', 2, 3, 3.14, 'new item', 'apple', 'banana']# 使用列表推导式生成新列表
squared_list = [x**2 for x in my_list if isinstance(x, int)]
print(squared_list)  # 输出: [1, 4, 9]# 使用random模块生成随机列表
random_list = [random.randint(1, 10) for _ in range(10)]
print(random_list)  # 输出: 例如: [5, 2, 9, 1, 7, 6, 3, 8, 10, 4]# 使用zip函数合并多个列表
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
combined_list = list(zip(names, ages))
print(combined_list)  # 输出: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]# 使用enumerate函数遍历带索引的列表
for index, value in enumerate(my_list):print(f"Index {index}: {value}")# 使用sorted函数对列表排序
sorted_list = sorted(my_list, key=lambda x: str(x))
print(sorted_list)  # 输出: 排序后的列表
  1. 使用del语句删除元素del fruits[2]这行代码的意思是删除列表fruits中索引为2的元素。在Python中,索引是从0开始的,所以这将删除第三个元素。假设fruits列表开始时包含['apple', 'banana', 'cherry', 'mango'],执行这行代码后,列表将变为['apple', 'banana', 'mango']

  2. 使用pop()方法删除元素fruits.pop()这行代码调用了列表的pop方法,不带任何参数时,pop方法会删除并返回列表中的最后一个元素。继续上面的例子,如果列表现在是['apple', 'banana', 'mango'],执行fruits.pop()后,列表将变为['apple', 'banana'],并且pop方法会返回被删除的元素'mango'

切片语法list_name[start:end],其中:

       start 是切片开始的索引(包含该索引位置的元素)。

       end 是切片结束的索引(不包含该索引位置的元素)。


数组(Array)

在Python中,数组通常指的是使用NumPy库创建的数组。NumPy是一个用于科学计算的库,提供了高性能的数组对象。

特性

  • 元素类型统一。
  • 通过索引访问元素,索引从0开始。
  • 通常用于数值计算和多维数据集。
import numpy as np# 创建一个 NumPy 数组
my_array = np.array([1, 2, 3, 4, 5])# 访问数组中的元素
print(my_array[0])  # 输出: 1
print(my_array[-1])  # 输出: 5# 修改数组中的元素
my_array[0] = 10
print(my_array)  # 输出: [10  2  3  4  5]# 数组间的数学运算,对应加起来
another_array = np.array([6, 7, 8, 9, 10])
result_array = my_array + another_array
print(result_array)  # 输出: [16  9 11 13 15]# 使用 NumPy 函数
mean_value = np.mean(my_array) #平均数
print(mean_value)  # 输出: 5.0# 生成随机数组
random_array = np.random.randint(1, 10, size=(3, 3))
print(random_array)  # 输出: 例如:
# [[3 7 2]
#  [4 1 6]
#  [8 9 5]]# 数组拼接
concatenated_array = np.concatenate((my_array, another_array))
print(concatenated_array)  # 输出: [10  2  3  4  5  6  7  8  9 10]# 数组转置
transposed_array = np.transpose(random_array)
print(transposed_array)  # 输出: 例如:
# [[3 4 8]
#  [7 1 9]
#  [2 6 5]]# 数组分割
split_arrays = np.split(random_array, 3, axis=1)
print(split_arrays)  # 输出: 例如:
# [array([[3],
#         [4],
#         [8]]),
#  array([[7],
#         [1],
#         [9]]),
#  array([[2],
#         [6],
#         [5]])]# 数组索引和切片
print(random_array[0, :])  # 输出: 例如: [3 7 2],第一列
print(random_array[:, 1])  # 输出: 例如: [7 1 9],第二行


Python中的数组和列表有以下主要区别

  1. 数据类型

    • 列表(List):可以存储不同类型的元素,如整数、浮点数、字符串、元组等,甚至是其他列表。
    • 数组(Array):通常指的是NumPy库中的数组,它们要求所有元素必须是相同类型的,例如全部为整数或全部为浮点数。
  2. 性能

    • 列表由于其灵活性(可以存储不同类型的元素),在内存使用和性能上可能不如数组高效。
    • 数组由于元素类型一致,可以进行优化,因此在数值计算和大规模数据处理时通常比列表有更好的性能。
  3. 功能

    • 列表提供了丰富的方法,如append()remove()pop()reverse()等,用于添加、删除和修改元素。
    • 数组虽然也有类似的功能,但NumPy库提供的数组更专注于数值计算,提供了大量的数学和统计方法,如sum()mean()max()等。

文件操作

# 导入os模块,用于获取当前工作目录
import os# 获取当前工作目录
current_directory = os.getcwd()
print(f"Current Working Directory: {current_directory}")# 定义文件路径
file_path = os.path.join(current_directory, 'example.txt')# 1. 创建并写入文件
# 使用 'w' 模式打开文件,如果文件已存在则会被覆盖
with open(file_path, 'w') as file:file.write("Hello, world!\n")file.write("This is an example text file.\n")file.write("We can write multiple lines to it.\n")# 2. 读取文件
# 使用 'r' 模式打开文件,用于读取
with open(file_path, 'r') as file:content = file.read()print("File Content:")print(content)# 3. 追加内容到文件
# 使用 'a' 模式打开文件,用于追加内容
with open(file_path, 'a') as file:file.write("This line was added later.\n")# 4. 再次读取文件以验证追加的内容
with open(file_path, 'r') as file:content = file.readlines()print("\nFile Content after appending:")for line in content:print(line.strip())# 5. 使用 'rb' 模式读取二进制文件
# 创建一个二进制文件
binary_file_path = os.path.join(current_directory, 'example.bin')
with open(binary_file_path, 'wb') as binary_file:binary_file.write(b'\x00\x01\x02\x03\x04')# 读取二进制文件
with open(binary_file_path, 'rb') as binary_file:binary_content = binary_file.read()print("\nBinary File Content:")print(binary_content)# 6. 使用 'w+' 模式读写文件
# 'w+' 模式允许读写文件,但会覆盖原有内容
with open(file_path, 'w+') as file:file.write("New first line.\n")file.seek(0)  # 将文件指针移动到文件开头content = file.read()print("\nFile Content after using 'w+':")print(content)# 7. 使用 'a+' 模式追加并读取文件
# 'a+' 模式允许在文件末尾追加内容并读取现有内容
with open(file_path, 'a+') as file:file.write("New last line added with 'a+'.\n")file.seek(0)  # 将文件指针移动到文件开头content = file.read()print("\nFile Content after using 'a+':")print(content)# 8. 使用 'x' 模式创建文件
# 'x' 模式用于创建新文件,如果文件已存在,则会引发 FileExistsError
try:with open(os.path.join(current_directory, 'new_example.txt'), 'x') as new_file:new_file.write("This is a new file created with 'x'.\n")
except FileExistsError:print("The file already exists.")# 9. 使用 'b' 模式处理二进制文件
# 读取二进制文件并写入另一个文件
with open(binary_file_path, 'rb') as source_binary_file:with open(os.path.join(current_directory, 'copy_example.bin'), 'wb') as dest_binary_file:dest_binary_file.write(source_binary_file.read())

 这段代码包含了以下文件操作的基本功能:

  1. 创建并写入文件。
  2. 读取文件内容。
  3. 追加内容到文件。
  4. 读取二进制文件。
  5. 使用 'w+' 模式读写文件。
  6. 使用 'a+' 模式追加并读取文件。
  7. 使用 'x' 模式创建新文件。
  8. 处理二进制文件。

目录访问

import os# 1. 获取当前工作目录
current_directory = os.getcwd()
print(f"Current Working Directory: {current_directory}")# 2. 创建目录
directory_name = "example_dir"
directory_path = os.path.join(current_directory, directory_name)# 如果目录不存在,则创建它
if not os.path.exists(directory_path):os.makedirs(directory_path)print(f"Directory '{directory_name}' created.")
else:print(f"Directory '{directory_name}' already exists.")# 3. 列出目录内容
print("\nDirectory Contents:")
for filename in os.listdir(directory_path):print(filename)# 4. 列出所有子目录和文件
print("\nSubdirectories and Files:")
for root, dirs, files in os.walk(directory_path):level = root.replace(current_directory, '').count(os.sep)indent = ' ' * 4 * (level)print('{}{}/'.format(indent, os.path.basename(root)))subindent = ' ' * 4 * (level + 1)for f in files:print('{}{}'.format(subindent, f))# 5. 删除目录
# 首先确保目录为空或递归删除非空目录
if os.path.exists(directory_path):try:os.rmdir(directory_path)print(f"Directory '{directory_name}' removed.")except OSError:# 如果目录非空,则使用 shutil.rmtree 进行递归删除import shutilshutil.rmtree(directory_path)print(f"Directory '{directory_name}' and its contents removed.")
else:print(f"Directory '{directory_name}' does not exist.")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flask返回Json格式字符,中文导致unicode乱码问题

一.问题描述 或者直接返回json格式的字符串 从上图可以看出,当flask实现的接口响应中存在中文时,接口返回json字串的中文为unicode乱码。 二.问题解决 百度搜索了很多,原来在创建flask app时使用json格式的字符串,默认是ascii编…

字节微前端框架Garfish

Garfish 是字节跳动开源的微前端框架,旨在应对现代 Web 应用在前端生态繁荣与应用日益复杂化背景下的挑战。本文将介绍如何使用 Garfish,提供代码示例,并与另一流行的微前端框架 Qiankun 进行对比分析。 安装 Garfish 首先,安装…

快速排序模版

1.霍尔法 #include <iostream> using namespace std; int partition(int *arr,int left,int right){int pivotIndexleft;while(left<right){while(left<right && arr[right]>arr[pivotIndex]){right--;}while(left<right && arr[left]<a…

vTable实现多维表格

介绍 vTable是字节开发的一款能用来渲染表格的库&#xff0c;是用canvas渲染&#xff0c;避免了传统用dom组件表格的一些问题&#xff0c;能很快的渲染出上万格子的表格。 接下来我将使用vTable构建类似下面的多维表格&#xff0c;其中quantity、sales等是指标。 使用 官网地址…

QT的基础数据类型(下)

QVector 与QList类似,但它在内存使用上更为紧凑,内部使用动态数组来存储元素,适用于存储大量相同类型的数据。 初始化 QVector的初始化方式有以下几种: //初始化一个空的QVectorQVector<int> vec;//初始化一个大小为10的空QVectorQVector<int> vec2(10);//使…

【精选】基于大数据的___银行信用卡用户的数仓系统的设计与实现(全网独一无二,最新定制)

目录&#xff1a; 关键技术介绍 PYTHON语言简介 大数据介绍 MySql数据库 DJANGO框架 Hadoop介绍 Scrapy介绍 B/S架构 系统的设计 系统总功能模块设计 系统测试 系统测试的目的 软件测试过程 6.3测试用例 参考代码&#xff1a; 为什么选择我&#xff1a; 博主介绍&am…

github访问加速项目@一键部署自动更改host修改加速Github访问

文章目录 abstractpowershell 版本的一键更新hosts文件更新Hosts 操作步骤准备:设置powershell执行策略powrshell脚本注册计划任务定期自动执行上述操作相关目录结构 其他方法获取相关脚本一键运行整合脚本&#x1f916;&#x1f43d;检查 abstract 尽管这里实现了一键部署自动…

自动驾驶-机器人-slam-定位面经和面试知识系列10之高频面试题(04)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新&#xff0c;基本涵盖了自己秋招历程被问过的面试内容&#xff08;除了实习和学校项目相关的具体细节&#xff09;。在知乎和牛客也会同步更新&#xff0c;全网同号&#xff08;lonely-stone或者…

Elasticsearch安装 Kibana安装

安装Elasticsearch 一、拉取镜像或者上传 docker pull Elasticsearch 二、将上传的镜像导入(在仓库拉取的这一步跳过) docker load -i es.tar docker load -i 三、创建容器 1.Elasticsearch 注意修改到自己的网络&#xff08;第八行&#xff09; docker run -d \--nam…

实时多个人脸跟踪算法实现过程记录【实时MOT】

实现的功能 之前做的实时多个人脸跟踪&#xff0c;现在记录一下。 摄像头检测到多个人脸&#xff0c;再进行跟踪。 现有问题&#xff1a;如果直接调用opncv的人脸跟踪&#xff0c;耗时多&#xff0c;无法做到实时。 具体实现过程 分为两个步骤&#xff1a;1.选base 2. 做优化…

2014年4月-2023年上市公司秩鼎ESG评级数据

2014年4月-2023年上市公司秩鼎ESG评级数据 1、时间&#xff1a;2014年4月-2023年11月 2、来源:秩鼎数据 3、指标&#xff1a;证券代码、SC、评级日期、ESG评级、ESG等级、ESG得分、E评级、E等级、E得分、S评级、S等级、S得分、G评级、G等级、G得分、总市值(亿元)、流通市值(…

电脑硬盘坏了怎么恢复数据?

在数字化时代&#xff0c;电脑硬盘作为存储核心&#xff0c;承载着我们的工作文档、学习资料、家庭照片以及无数珍贵的回忆。然而&#xff0c;硬盘作为机械设备&#xff0c;也有其寿命和脆弱性&#xff0c;一旦出现故障&#xff0c;数据恢复便成为了一个紧迫而棘手的问题。本文…

电子元器件之聚丙烯膜电容(CBB)

很多人对硬件感兴趣&#xff0c;要么就是想学一门手艺&#xff0c;找一份相关的工作。要么就是对电子感兴趣&#xff0c;想自己做些东西玩玩。虽然现在很多电子模块已经很成熟了&#xff0c;稍微连接一下线路就能做一个自己电子小制作&#xff0c;网上也有很多教学视频。 但大…

「Python程序设计」基本数据类型:字符串

​在python的程序设计过程中&#xff0c;字符串是需要经常处理的变量类型。字符串在程序中的存储方式&#xff0c;类似于一维数组&#xff0c;每个字符占据数组中的一个单元格。 字符串可以存储字符类型的变量&#xff0c;即使是数字类型&#xff0c;也可以通过字符串来进行存…

(javaweb)maven高级

目录 ​编辑 1.分模块设计与开发 2.继承与聚合--继承关系实现 3.继承与聚合--版本锁定 4.继承与聚合--聚合版本 5.私服 资源的上传与下载 1.分模块设计与开发 分模块&#xff1a;拆分成多个模块进行开发 不分模块&#xff1a;业务代码堆积成一个 不利于项目管理和维护并…

Apache PDFBox

文章目录 一、关于 Apache PDFBox二进制下载构建贡献支持已知限制和问题许可证&#xff08;另见[LICENSE. txt](https://github.com/apache/pdfbox/blob/trunk/LICENSE.txt)&#xff09;出口管制 二、依赖1、核心组件最低要求字体处理XMP元数据使用Maven包含依赖项 2、可选组件…

密码生成器(HTML+CSS+JavaScript)

&#x1f30f;个人博客主页&#xff1a;心.c ​ 前言&#xff1a;前两天写了密码生成器&#xff0c;现在跟大家分享一下&#xff0c;大家如果想使用随便拿&#xff0c;如果哪里有问题还请大佬们给我指出&#xff0c;感谢支持 &#x1f525;&#x1f525;&#x1f525;专题文章&…

MySQL 的半同步模式

目录 1 半同步简介: 解决主从数据一致性问题 2 实现半同步模式实践操作 2.1 MASTER 2.2 SLAVE 1 2.3 SLAVE 2 2.4 查看client链接状态 2.5 SLAVE 服务器故障模拟 2.5.1 停止 SLAVE 的 IO_THREAD 2.5.2 查看SLAVE 的IO线程是否关闭 2.5.3 查看 MASTER 上 client 的连接状态…

在树莓派5上使用pytroch进行模型训练—全流程笔记

在树莓派上运行pytroch模型&#x1f680; 在完成了树莓派的一系列基础配置学习之后&#xff0c;按照规划&#xff0c;下一步要做的就是在树莓派上安装一个pytorch&#xff0c;尝试运行一下深度学习的模型&#xff0c;如果可以实现且准速度有一定保证的话&#xff0c;就可以作为…

使用Qt+Visual Stuidio写一个简单的音乐播放器(1)

1.使用QMediaPlayer播放音乐 第三步:在代码头部加上: #include <QtMultimedia/QMediaPlayer> // VS向.pro文件添加代码的方式 #pragma execution_character_set("utf-8") // qt支持显示中文 QMediaPlayer类是一个高级媒体播放类。它可以用来播放歌曲、电…