【数据分析:语言篇】Python(06)Python基础知识

【数据分析:语言篇】Python(06)Python基础知识

Python基础知识

Python 是一种高级的、动态的、解释型的编程语言,具有简单易学、开发效率高、可读性强等特点,广泛应用于数据科学、Web 开发、人工智能等领域。

尽管Python是一种面向对象的语言,但Python的代码编写比较自由,并不像Java语言那样需要定义一个main方法作为入口点。Python程序的代码可以像批处理文件一样从上到下按顺序编写,这也是Python适合做运维的原因。

尽管Python语言的代码自由度更大,但这并不等于Python语言的代码可以随便编写,仍然需要一定的结构。学习Python需要了解它的语法特点,比如注释规则、代码缩进、编码规范等。

Python的基本要素

Python程序包括以下一些基本要素。

模块

Python 程序可以分为多个模块,每个模块是一个独立的文件,包含一些可执行的 Python 代码。使用 import 语句可以将一个模块导入到当前程序中。

要进行数学计算,我们需要导入math模块。

import math

# 获取圆周率
print(math.pi)
# 开平方
print(math.sqrt(4))
# 计算对数值
print(math.log(9, 3))

image-20230220233347527

要进行数据分析,我们需要导入numpy模块。

import numpy as np

# 创建1维数组
ary1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
print(ary1)
# 创建1维数组
ary2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(ary2)
print(ary2.shape)

image-20230220233855399

语句

Python 程序中的语句是一系列指令,用于控制程序的执行流程。Python 中的语句包括赋值语句、条件语句、循环语句、函数定义语句等。

  • 赋值语句

Python 中的赋值语句用于给变量赋值,格式为:

变量名 = 表达式

在上面的案例中:

ary1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

就是将一个1维数据赋值给变量ary1。

  • 条件语句

Python 中的条件语句用于根据条件来选择执行的代码块,格式为:

if 条件语句:
    代码块1
else:
    代码块2

比如比较两个数的大小:

# 条件语句
a = 10
b = 20
if a > b:
    print("a 大于 b")
else:
    print("a 小于等于 b")

image-20230220234456771

表达式

Python 程序中的表达式是一组由运算符和操作数组成的式子,用于计算某个值。Python 中的表达式包括算术表达式、比较表达式、逻辑表达式等。

  • 算术表达式

根据两个变量的值,计算第三个变量:

# 算术表达式
a = 10
b = 3
c = a + b * 2 / 5

image-20230220234918174

  • 比较表达式
# 比较表达式
a = 10
b = 3
c = a > b
d = a < b
print(c, d)

image-20230220235118623

注释

注释,就是对代码的解释、说明、备注等,通常用于对代码中的复杂逻辑、语句含义及作用等做出说明,方便人们阅读理解代码。

在添加注释时,一定要有意义,要能充分体现代码的作用。

在Python中,通常包括3种类型的注释,分别是单行注释、多行注释和Python 2中常用的中文注释。

  • 单行注释

在Python中,使用“#”作为单行注释发符号。从符号“#”开始直到行尾的所有内容都是注释内容,会被Python编译器忽略。

单行注释可以放在要注释的代码的前一行,也可以放在要注释的代码的行尾。

在前面的案例中,所有注释都是单行注释,并且都是在要注释的代码的前一行,比如:

# 获取圆周率
print(math.pi)
# 开平方
print(math.sqrt(4))
# 计算对数值
print(math.log(9, 3))

当然,也可以将注释放到行尾,比如:

# 获取圆周率
print(math.pi) # 这也是正确的注释,获取圆周率,行尾注释
# 开平方
print(math.sqrt(4)) # 这也是正确的注释,开平方
# 计算对数值
print(math.log(9, 3)) # 这也是正确的注释
  • 多行注释

在Python中,没有一个单独的多行注释标记,而是用一对三引号的内容来表示多行注释。比如:

"""
下面的三行代码的作用分别是:
第1行:获取圆周率
第2行:开平方
第3行:计算对数值
"""
print(math.pi)
print(math.sqrt(4))
print(math.log(9, 3))

或者:

'''
下面的三行代码的作用分别是:
第1行:获取圆周率
第2行:开平方
第3行:计算对数值
'''
print(math.pi)
print(math.sqrt(4))
print(math.log(9, 3))

但是,这其实并不是真正的注释,而是一个匿名的多行字符串。

你会发现,它在Python代码中的语法高亮跟字符串的一样,而不是跟单行注释的一样,而在其他语言,比如Java中,单行注释和多行注释的高亮颜色是一样的。

# 注释的颜色是灰色的
# 你看,字符串的颜色是绿色的

a = "楼上说得对,我是绿色的"

"""
他们说我是多行字符串
但是我的颜色跟注释的颜色不一样
我的颜色跟字符串的颜色一样
我觉得我是个假注释
"""

image-20230221002838741

既然它是字符串,那就是可以赋值的。

"""
他们说我是注释
我觉得我是个假注释
"""
a = """
我真的是注释吗?
不,其实我是一个字符串!
我有自己的类型、我在内存中占用了空间、有内存地址
"""
print(a, type(a), id(a))
print(
    "print 的内容其实可以换行写,我是字符串,没商量,1"
)
print(
    "print 的内容其实可以换行写,我是字符串,没商量,2"
    # 我确实是注释,虽然我在print里面,但是打印的结果看不到我
    """
    我真的是注释吗?
    如果我真的是注释,那么现在编译器应该忽略我,print不应该把我打印出来,只会打印我前面的那行。
    但你看我打印出来了,我楼上的那行注释就没打印出来,所以我真的只是一个匿名的多行字符串。
    """
)

执行之后,输出内容如下:

image-20230221003636683

  • 中文注释

在Python 2中需要用到,但在Python 3中并不需要了,用于指定当前脚本中包含中文,需要用utf-8编码。

# coding=utf-8

Python的代码格式

Python的代码格式非常重要,因为它可以影响到代码的可读性和可维护性。在Python社区中,通常会遵循一些通用的代码格式约定,例如PEP 8(Python Enhancement Proposal 8)。

一些Python代码格式的基本要点:

  • 缩进:Python使用缩进来表示代码块,一般使用4个空格作为缩进距离。
  • 行长:每行代码不应超过80个字符,可以使用反斜杠(\)来拆分长行。
  • 空格:在逗号、冒号、分号后应加上空格;在二元运算符两侧应加上空格;函数定义和调用时,函数名和左括号之间不应有空格。
  • 命名规范:变量名、函数名和类名应该使用小写字母,用下划线来分隔单词。常量名应该全部大写,用下划线来分隔单词。私有变量应该以一个下划线开头。类名应该以大写字母开头,采用驼峰命名法。
  • 模块导入:在文件开头应该先导入标准库模块,然后是第三方库模块,最后是本地应用程序模块。每个导入应该单独一行。
  • 函数:函数定义时应该有文档字符串,用于说明函数的用途和参数的含义。函数应该尽量短小,每个函数都应该完成一个特定的任务。函数应该采用动词或动词短语命名,用于描述函数的行为。
内容概要:本文围绕EKF SLAM(扩展卡尔曼滤波同步定位与地图构建)的性能展开多项对比实验研究,重点分析在稀疏与稠密landmark环境下、预测与更新步骤同时进行与非同时进行的情况下的系统性能差异,并进一步探讨EKF SLAM在有色噪声干扰下的鲁棒性表现。实验考虑了不确定性因素的影响,旨在评估不同条件下算法的定位精度与地图构建质量,为实际应用中EKF SLAM的优化提供依据。文档还提及多智能体系统在遭受DoS攻击下的弹性控制研究,但核心内容聚焦于SLAM算法的性能测试与分析。; 适合人群:具备一定机器人学、状态估计或自动驾驶基础知识的科研人员及工程技术人员,尤其是从事SLAM算法研究或应用开发的硕士、博士研究生和相关领域研发人员。; 使用场景及目标:①用于比较EKF SLAM在不同landmark密度下的性能表现;②分析预测与更新机制同步与否对滤波器稳定性与精度的影响;③评估系统在有色噪声等非理想观测条件下的适应能力,提升实际部署中的可靠性。; 阅读建议:建议结合MATLAB仿真代码进行实验复现,重点关注状态协方差传播、观测更新频率与噪声模型设置等关键环节,深入理解EKF SLAM在复杂环境下的行为特性。稀疏 landmark 与稠密 landmark 下 EKF SLAM 性能对比实验,预测更新同时进行与非同时进行对比 EKF SLAM 性能对比实验,EKF SLAM 在有色噪声下性能实验
内容概要:本文围绕“基于主从博弈的售电商多元零售套餐设计与多级市场购电策略”展开,结合Matlab代码实现,提出了一种适用于电力市场化环境下的售电商优化决策模型。该模型采用主从博弈(Stackelberg Game)理论构建售电商与用户之间的互动关系,售电商作为领导者制定电价套餐策略,用户作为跟随者响应电价并调整用电行为。同时,模型综合考虑售电商在多级电力市场(如日前市场、实时市场)中的【顶级EI复现】基于主从博弈的售电商多元零售套餐设计与多级市场购电策略(Matlab代码实现)购电组合优化,兼顾成本最小化与收益最大化,并引入不确定性因素(如负荷波动、可再生能源出力变化)进行鲁棒或随机优化处理。文中提供了完整的Matlab仿真代码,涵盖博弈建模、优化求解(可能结合YALMIP+CPLEX/Gurobi等工具)、结果可视化等环节,具有较强的可复现性和工程应用价值。; 适合人群:具备一定电力系统基础知识、博弈论初步认知和Matlab编程能力的研究生、科研人员及电力市场从业人员,尤其适合从事电力市场运营、需求响应、售电策略研究的相关人员。; 使用场景及目标:① 掌握主从博弈在电力市场中的建模方法;② 学习售电商如何设计差异化零售套餐以引导用户用电行为;③ 实现多级市场购电成本与风险的协同优化;④ 借助Matlab代码快速复现顶级EI期刊论文成果,支撑科研项目或实际系统开发。; 阅读建议:建议读者结合提供的网盘资源下载完整代码与案例数据,按照文档目录顺序逐步学习,重点关注博弈模型的数学表达与Matlab实现逻辑,同时尝试对目标函数或约束条件进行扩展改进,以深化理解并提升科研创新能力。
内容概要:本文介绍了基于粒子群优化算法(PSO)的p-Hub选址优化问基于粒子群优化算法的p-Hub选址优化(Matlab代码实现)题的Matlab代码实现,旨在解决物流与交通网络中枢纽节点的最优选址问题。通过构建数学模型,结合粒子群算法的全局寻优能力,优化枢纽位置及分配策略,提升网络传输效率并降低运营成本。文中详细阐述了算法的设计思路、实现步骤以及关键参数设置,并提供了完整的Matlab仿真代码,便于读者复现和进一步改进。该方法适用于复杂的组合优化问题,尤其在大规模网络选址中展现出良好的收敛性和实用性。; 适合人群:具备一定Matlab编程基础,从事物流优化、智能算法研究或交通运输系统设计的研究生、科研人员及工程技术人员;熟悉优化算法基本原理并对实际应用场景感兴趣的从业者。; 使用场景及目标:①应用于物流中心、航空枢纽、快递分拣中心等p-Hub选址问题;②帮助理解粒子群算法在离散优化问题中的编码与迭代机制;③为复杂网络优化提供可扩展的算法框架,支持进一步融合约束条件或改进算法性能。; 阅读建议:建议读者结合文中提供的Matlab代码逐段调试运行,理解算法流程与模型构建逻辑,重点关注粒子编码方式、适应度函数设计及约束处理策略。可尝试替换数据集或引入其他智能算法进行对比实验,以深化对优化效果和算法差异的理解。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wux_labs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值