机器学习技术(一)——python基础超详解

news/2024/5/20 13:00:28/文章来源:https://blog.csdn.net/tianhai12/article/details/131453129

机器学习技术(一)——python基础超详解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DJuKhLvl-1688009467468)(D:\Administrator\Downloads\机器学习技术.png)]

文章目录

  • 机器学习技术(一)——python基础超详解
      • 0、引言
      • 1、基础概念
        • **:snake:变量**
        • **:snake:注释**
        • **:snake:输入 输出**
      • 2、数据类型
        • **:snake:数值类型**
        • **:snake:运算符**
        • **:snake:字符串类型**
        • **:snake:列表**
        • **:snake:元组**
        • **:snake:字典**
        • **:snake:集合**
      • 3、选择、循环与函数
        • **:snake:if....elif...else**
        • **:snake:try:… except Exception**
        • :snake:循环语句
        • :snake:函数
      • 4、对象
        • **:snake:创建类**
        • **:snake:访问属性**
        • **:snake:类的继承**
      • 5、深拷贝和浅拷贝
        • :snake:浅拷贝
        • :snake:深拷贝
      • 6、标准库
        • :snake:sys
        • :snake:os
        • :snake:time
      • 7、总结

0、引言

​ Python3语言的基础,快速掌握Python语言中的基本数据类型、Python编程语言的基本语法、Python面向对象编程和Python的文件操作。为以后的机器学习实例实验打下基础。

​ 本篇内容适用人群:具有一定python基础的读者,期末考试复习巩固基础可用、打算学习机器学习等需要用python编程实现的知识,需要巩固python内容的读者…

​ 另外没有基础的同学建议去菜鸟教程等文档、或者网课自学

1、基础概念

🐍变量

语法:变量名=变量值(等号代表赋值)

输入:

a="hello world,hello tianhai"
print(a)

输出:

hello world,hello tianhai

🐍注释

为了代码的清晰)从#号开始,一直到本行的末尾,都是被注释的内容不会被Python解释器解析,即Python解释器看到#就不会进行编译。

# 我是一段注释
'''
我也是一段注释
'''

🐍输入 输出

语法:input(content)

返回值是字符串

输入:

input()

在弹出的输入框中通过键盘输入‘123’

输出:

'123'

2、数据类型

🐍数值类型

数值类型包含整型、浮点型、复数类型、布尔类型

各数值类型间可相互转换

输入:

print(int())		#默认为0
print(float())		#没有参数,默认为0.0
print(complex())		#没有参数。默认为 0j
print(bool())		#没有参数,默认为False

输出:

0
0.0
0j
False

🐍运算符

输入:

print(True+False)		# 输出1,True默认为1,False为0   
print(True or False)	# 输出True,关键字or执行“或”操作
print(5//2)			# 输出2,//为取整运算符 
print(5%2)			# 输出1,%为取余运算符 
print(3**2)   			# 输出9,**表示乘方操作 
print(5+1.6) 	 		# 输出6.6,不同精度的类型的数字相加默认取高精度类型作为结果

输出:

1
True
2
1
9
6.6

🐍字符串类型

输入:

S = 'python'							# 给变量S赋值 python
# len(obj): 返回对象的长度
print(len(S)) 							# 输出6 
print(S[0],S[1],S[-1]) 				# 输出pyn ,按照索引获取元素
print(S+'1',S*2) 						# 输出python1 pythonpython:合并和重复

输出:

6
p y n
python1 pythonpython

字符串常用操作

  1. 字符串切片
S = "python"
S.split('h')
# 输出[‘pyt’,’on’]
  1. 字符串替换
S.replace('py','PY')
  1. 小写字符转化为大写、大写字符转化为小写
S.upper()
S.lower()
  1. 字符连接
emo = ''.join(['life', 'is' ,'short'])
print(emo)
# 输出life is short,join拼接字符串
  1. 格式化字符串
hw12='%s %s %d' % ('hello','world',12) 	# 格式化字符串
print(hw12)								# 输出hello world 12

🐍列表

  1. 列表的常用操作
language = ['python', 'R', 'C++']
  1. 追加元素
language = ['python', 'R', 'C++']
language.append('Rust')			# 追加元素
print(language)
# 输出 ['python', 'R', 'C++','Rust']
  1. 删除元素
language = ['python', 'R', 'C++']
language.remove('R')
print(language)
# 输出 ['python', 'C++']
  1. 插入列表的指定位置
language = ['python', 'R', 'C++']
language.insert(1,'Java')# 在下标1的地方插入元素Java
print(language)
# 输出 ['python', 'Java', 'R', 'C++']
  1. 移除列表中下标对应的元素
language = ['python', 'R', 'C++']
language.pop(1)# 删除下标为1的元素
print(language)
# 输出 ['python', 'C++']
  1. 遍历并获取元素和对应索引
language = ['python', 'R', 'C++']
for i in enumerate(language): print(i)		
#输出:(0, python)
#	   (1, R)
#	   (2, C++)
  1. 批量生成符合规则的元素组成的列表
language = ['python', 'R', 'C++']
double = [x*2 for x in language]
print(double)					
#输出 :['pythonpython ', 'RR ', 'C++C++ ']
  1. 对列表进行排序
list1 = [12,45,34,56]
list1.sort()
print(list1)
# 输出[12,34,45,56]
  1. 逆置列表中元素
list1 = [12,45,34,56]
list1.reverse()					# 对列表进行逆置
print(list1)						# 输出[56,34,45,12]

🐍元组

  1. 创建元组
T=(1,2,3)
  1. 元组合并相加
T = T+(4,5)
print(T) 
输出:(1, 2, 3, 4, 5)
  1. 只有一个元素的元组
t=(12,) 
  1. 元组的不可变性
tuple1 = (12,45,32,55,[1,0,3])
# 元组中可变的元素是可以变得
tuple1[4][0] = 2
print(tuple1)			# (12,45,32,55,[2,0,3])
tuple1[0] = "11"		# 程序异常,元组的不可变性

🐍字典

  1. 定义字典
#三种方法
x = {'food':'Spam','quantity':4,'color':'pink'}
X =dict(food='Spam',quantity=4, color='pink')
x = dict([("food", "Spam"),("b", "2"),("color","pink")])
  1. 元素访问
print(x.keys()) 	# 输出dict_keys(['food', 'quantity', 'color'])
print(x.values())	# 输出dict_values(['Spam', 4, 'pink'])
print(x.items())	# 输出 dict_items([('food', 'Spam'), ('quantity', 4), ('color', 'pink')])

3.清空与删除

x.clear()				# 清空字典中的所有数据
print(x)				# 输出 {}
del(x)
print(x)				# 程序异常,提示“d”未定义

🐍集合

  1. 定义集合
sample_set = {'Prince', 'Techs'}
print('Data' in sample_set)   	# 输出False,in的作用是检查集合中是否存在某一元素
  1. 增加、删除元素
sample_set.add('Data')      		# 向集合中增加元素Data
print(sample_set)					# 输出 {'Prince', 'Techs', 'Data'}
sample_set.remove('Data')   		# 删除元素Data  

3.不可变集合

sample_set = frozenset(sample_set)

4.集合元素的唯一性

list2 = [1,3,1,8,3]
print(list(set(list2)))	# 输出 [1,3,8],利用集合元素的唯一性进行列表去重

3、选择、循环与函数

接收一个用户输入的分数,然后判断用户所输入的分数属于什么级别。使用Python中的if语句可以完成此功能。

🐍if…elif…else

if 判断条件1:执行语句1……
elif 判断条件2:执行语句2……
elif 判断条件3:执行语句3……
else:执行语句4……

🐍try:… except Exception

是Python中用于捕获异常的语句,如果try中的语句出现错误,则会执行except中的语句。

输入:

#根据输入的分数判断
# input():用于接收输入。
score = input("请输入你的分数")# input函数接收输入,为字符串类型
try:score = float(score)	# 将分数转化为数字类型if 100>=score>=90:		# 判断输入的值是否大于等级分数print("优")			# 满足条件后输出等级elif 90 > score >= 80:print("良")elif 80>score>60:print("及格")else:print("去补考吧!")
except Exception:print("请输入正确的分数")

输出:

请输入你的分数59
去补考吧!

🐍循环语句

当满足条件时循环执行语句块,想要结束循环时,使用break或continue结束循环。

输入:

#while循环
i = 0								# 新建i变量
while i<9:							# 设置循环条件i+=1							# 每次循环i增加1if i == 3:						# 判断条件是否满足print("跳出此次循环")continue					# continue跳出当前的这一次循环if i == 5:print("跳出当前大的循环")break						# 跳出当前的大的循环print(i)

输出:

1
2
跳出此次循环
4
跳出当前大的循环

输入:

#使用for循环打印包含*元素的菱形
for i in range(10):  					 #定义外层循环(第几行)for k in range (10-i): 				 #定义内层循环,每一行对应的纵向位置print(" ",end="") 				 #打印空for j in range(2*i-1): 				 #打印*, 每一行对应的纵向位置print('*', end="")print()

输出:

         *********************************************************************************

🐍函数

自定义一个函数,返回一个序列。序列中每个数字都是前两个数字之和(斐波那契数列)。

输入:

def fibs(num):								# 位置参数result = [0,1]								# 新建列表存储数列的值for i in range(2,num):						# 循环num-2次a = result[i-1] + result[i-2]			result.append(a)						# 将值追加至列表return result								# 返回列表
fibs(5)

输出:

[0, 1, 1, 2, 3]

输入:

def hello(greeting='hello',name='world'):		# 默认参数print('%s, %s!' % (greeting, name))		# 格式化输出	
hello() 							# hello,world    默认参数
hello('Greetings') 				# Greetings,world     位置参数
hello('Greetings','universe') 	# Greetings,universe     位置参数
hello(name='Gumby')				# hello,Gumby	关键字参数

输出:

hello, world!
Greetings, world!
Greetings, universe!
hello, Gumby!

4、对象

🐍创建类

据Dog类创建的每个实例都将存储名字和年龄。我们将赋予了每条小狗蹲下(sit())和打滚(roll_over())的能力:

输入:

class Dog():"""一次模拟小狗的简单尝试"""def __init__ (self,name,age):"""初始化属性name和age"""self.name = nameself.age = agedef sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title()+"is now sitting")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title()+"rolled over!")dog = Dog("哈士奇",2)
dog.sit()
dog.roll_over()

输出:

哈士奇is now sitting
哈士奇rolled over!

🐍访问属性

输入:

class Employee:'所有员工的基类'empCount = 0def __init__(self, name, salary):self.name = nameself.salary = salaryEmployee.empCount += 1  def displayCount(self):print("Total Employee %d" % Employee.empCount )def displayEmployee(self):print("Name : ", self.name,  ", Salary: ", self.salary)
# 创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
# 创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000)
emp1.displayEmployee()
emp2.displayEmployee()
print("Total Employee %d" % Employee.empCount)

输出:

Name :  Zara , Salary:  2000
Name :  Manni , Salary:  5000
Total Employee 2

🐍类的继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的类型和子类型关系。

输入:

class Parent:        # 定义父类parentAttr = 100def __init__(self):print("调用父类构造函数")def parentMethod(self):print('调用父类方法')def setAttr(self, attr):Parent.parentAttr = attrdef getAttr(self):print("父类属性 :", Parent.parentAttr)
class Child(Parent): # 定义子类def __init__(self):print("调用子类构造方法")def childMethod(self):print('调用子类方法')
c = Child()          # 实例化子类
c.childMethod()      # 调用子类的方法
c.parentMethod()     # 调用父类方法
c.setAttr(200)       # 再次调用父类的方法 - 设置属性值
c.getAttr()    

输出:

调用子类构造方法
调用子类方法
调用父类方法
父类属性 : 200

5、深拷贝和浅拷贝

使用python中的copy模块来实现深拷贝的功能

🐍浅拷贝

原数据中嵌套列表的值被修改时,浅拷贝数据一起被修改

import copy
Dict1 = { 'name': 'lee', 'age':89, 'num':[1,2,8]}	# 新建字典
Dict_copy = Dict1.copy()			# 浅拷贝
Dict1['num'][1] = 6				# 修改原数据中嵌套列表的值
print('Dict_copy:'+ str(Dict_copy))	
# Dict_copy :{‘name’:’lee’, ‘age’:89, ‘num’:[1,6,8]}# 浅拷贝数据一起被修改

🐍深拷贝

原数据中嵌套列表的值被修改时,深拷贝的数据不被修改

import copy
Dict1 = { 'name': 'lee', 'age':89, 'num':[1,2,8]}	# 新建字典
Dict_dcopy = Dict1.copy()			# 浅拷贝
Dict1['num'][1] = 6				# 修改原数据中嵌套列表的值
print('Dict_dcopy:'+ str(Dict_dcopy))	
# Dict_dcopy :{‘name’:’lee’, ‘age’:89, ‘num’:[1,2,8]}		# 深拷贝没有修改

6、标准库

🐍sys

  1. sys.exit([n])

此方法可以是当前程序退出,n为0时表示正常退出,其他值表示异常退出。

输入:

import sys
for i in range(100):print(i)if i ==5:sys.exit(0)

输出:

0
1
2
3
4
5An exception has occurred, use %tb to see the full traceback.SystemExit: 0
  1. sys.path

获取模块搜索路径。

输入:

sys.path

输出:

['', 'D:\\Anaconda3\\python39.zip', 'D:\\Anaconda3\\DLLs', 'D:\\Anaconda3\\lib', 'D:\\Anaconda3', 'D:\\Anaconda3\\lib\\site-packages', 'D:\\Anaconda3\\lib\\site-packages\\win32', 'D:\\Anaconda3\\lib\\site-packages\\win32\\lib', 'D:\\Anaconda3\\lib\\site-packages\\Pythonwin']
  1. sys.platform

获取当前系统平台。

输入:

sys.platform

输出:

'linux'  

or

'win32'

🐍os

  1. 获取当前进程id
import os
print("当前进程的ID:", os.getpid())
  1. 获取当前父进程id
print("当前父进程的ID:", os.getppid())
  1. 获取当前所在路径
cwd = os.getcwd()
print("当前所在路径为:",cwd)
  1. 改变当前工作目录
os.chdir("/home/")
print("修改后当前所在路径为:", os.getcwd())
  1. 返回目录下所有文件
print("当前目录下的文件有:", os.listdir(cwd))
  1. 输出当前路径下的所有文件
for root, dirs, files in os.walk(cwd, topdown=False):for name in files:print(os.path.join(root, name))for name in dirs:print(os.path.join(root, name))

🐍time

  1. time.time()

用于获取当前时间戳

import time
# time.time():用于获取当前时间戳
time_now = time.time()
print("时间戳:",time_now)
# 输出:
# 时间戳: 1560166359.9892673
  1. time.localtime()

获取时间元组

localtime = time.localtime(time_now)
print("本地时间为 :", localtime)
  1. time.asctime()

获取格式化的时间

localtime = time.asctime(localtime)
print("本地时间为 :", localtime)
  1. time.strftime(format[, t])

接收时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。

print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

7、总结

本文系统性地介绍了python一些基本命令,数据类型,循环以及函数的定义等,并相应给了一些例子,通过完成这些小例子能够较好地巩固python基础并为以后的学习做铺垫。

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

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

相关文章

Matlab论文插图绘制模板第106期—带误差棒的堆叠柱状图

在之前的文章中&#xff0c;分享了Matlab带误差棒的折线图绘制模板&#xff1a; 带误差棒的柱状图绘制模板&#xff1a; 进一步&#xff0c;再来分享一下带误差棒的堆叠柱状图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源…

《移动互联网技术》第一章 概述: 掌握移动互联网的基本概念和组成

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

基于Java+Swing+Mysql商品信息管理系统

基于JavaSwingMysql商品信息管理系统 一、系统介绍二、功能展示1.主页2.新增商品信息3.查询商品信息 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看商品列表、新增商品信息、查询商品信息 运行环境&#xff1a;eclipse、idea、jdk1.8 二、功能展示…

Android跨平台语言分析

跨平台技术发展的三个阶段 第一阶段是混合开发的web容器时代 为了解决原生开发的高成本、低效率&#xff0c;出现了Hybrid混合开发原生中嵌入依托于浏览器的WebViewWeb浏览器中可以实现的需求在WebView中基本都可以实现但是Web最大的问题是&#xff0c;它的性能和体验与原生开发…

ARM接口题目

1)说出ARM可以工作的模式名字。 ARM有8个基本工作模式: User :非特权模式&#xff0c;大部分任务执行在这种模式 FIQ :当一个高优先级&#xff08;fast)中断产生时将会进入这种模式 IRQ :当一个低优先级&#xff08;normal)中断产生时将会进入这种模式 Supervisor :当复位…

《Linux操作系统编程》 第十章 线程与线程控制: 线程的创建、终止和取消,detach以及线程属性

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

微服务04 分布式搜索引擎 elasticsearch DSL数据聚合 自动补全 数据同步 集群 Sentinel

微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI 索引库 DSL查询 RestClient 黑马旅游 分布式搜索引擎03 1.数据聚合 聚合&#xff08;aggregations&#xff09;可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#x…

【FreeRTOS】Arduino开发STM32

0.开发环境(工具) Vscode 、platformio、arduino、STM32F103C8T6、USB-TTL 引脚连接&#xff1a;STM32直接设置为烧录模式即可&#xff0c;烧录完成后会自动运行程序。 1.点灯加串口输出调试 注意事项&#xff1a;每次上传程序前&#xff0c;需要按一下复位键。 #include &…

vue下基于elementui自定义表单-后端数据设计篇

vue下基于elementui自定义表单-后端篇 自定义表单目前数据表单设计是基于数据量不大的信息单据场景&#xff0c;因为不考虑数据量带来的影响。 数据表有: 1.表单模版表&#xff0c;2.表单实例表&#xff0c;3.表单实例项明细表&#xff0c;4表单审批设计绑定表 以FormJson存…

Unity | HDRP高清渲染管线学习笔记:HDRP Custom Pass

目录 一、Custom Pass Volume组件介绍 1.Mode&#xff08;模式&#xff09; 2.Injection Point&#xff08;注入点&#xff09; 3.Priority 4.Fade Radius 5.custom passes 二、查看Custom Pass的渲染阶段 Custom Pass允许你执行以下操作&#xff08;官方文档&#xff0…

前端食堂技术周刊第 88 期:Svelte4、NestJS 10、State of CSS 2023、Vitest 1.0 Roadmap、Fresh 1.2

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;帝王蟹柳 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 大家好&#xff0c;我是童欧巴。欢迎来到前端食堂技术周刊&#xff0c;我们先来看下…

mysql基础3——数据备份与恢复、破解数据库密码

文章目录 一、备份方案二、备份工具mysqldump2.1 备份整张表数据2.2 备份整个库数据 三、全量备份四、差异备份五、数据库密码破解 一、备份方案 备份方案概念特点全量备份对某一个时间点上的所有数据或应用进行完全拷贝。数据恢复快&#xff0c;备份时间长。增量备份在一次全…

安装Home Assistant

文章目录 前言1. 安装Home Assistant2. 配置Home Assistant3. 安装cpolar内网穿透3.1 windows系统3.2 Linux系统3.3 macOS系统 4. 映射Home Assistant端口5. 公网访问Home Assistant6. 固定公网地址6.1 保留一个固定二级子域名6.2 配置固定二级子域名 转载自远程穿透的文章&…

多元回归预测 | Matlab海鸥算法(SOA)优化极限学习机ELM回归预测,SOA-ELM回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab海鸥算法(SOA)优化极限学习机ELM回归预测,SOA-ELM回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %% 清空环…

【C语言】计算机是如何存储整数和小数的?

文章目录 前言一、正整数和0二、负整数三、小数1、定点数&#xff08;1&#xff09;什么是定点数&#xff08;2&#xff09;表示精度&#xff08;3&#xff09;表示范围&#xff08;4&#xff09;优缺点 2、浮点数&#xff08;1&#xff09;什么是浮点数&#xff08;2&#xff…

JMeter变量和和属性(4)

这里写目录标题 一、JMeter变量1、使用JMeter变量的作用有&#xff1a;2、定义变量的方式3、引用变量的方式4、引用变量5、案例&#xff1a;切换GreaterWMS的环境6、案例&#xff1a;测试平台登录案例 二、JMeter属性1、JMeter属性特点2、JMeter属性和变量的区别&#xff1a;3、…

MathType公式批量转换为Word自带公式的VBA实现及error ‘4198‘ 处理

VBA 纯新手&#xff0c;程序可能比较傻&#xff0c;大家将就看。有改进建议&#xff0c;欢迎留言 参考链接&#xff1a; 1、2种办法把MathType公式转换为Word公式 2、一键批量将mathtype公式转换成word自带公式-vba/vbnet_mathtype批量转word自带_一路向前的小Q的博客-CSDN博…

5G NR:RACH随机接入过程

1. 简述 无论是3G,4G还是现在的5G都需要随机接入过程&#xff0c;随机接入过程主要是为了让基站和UE之间做好上行同步以及初始接入。此文章仅仅帮助大家了解此过程&#xff0c;更加具体的用途及其场景需要参考具体的3GPP协议&#xff08;38.211,38.212,38.213).主要帮助理解如下…

网络安全合规-银行业数据治理架构体系搭建(二)

本次《指引》使用了许多新兴词汇&#xff0c;这些词汇均是首次被监管部门正式引用&#xff0c;并出现在银行业金融机构的监督管理文件中。我们将通过这些词汇更好地理解《指引》。 首席数据官&#xff1a;“首席数据官”首次作为需要监管机构任职资格许可的管理岗位被提出。通过…