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

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

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

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增加1
	if 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 = name
		self.age = age
	def 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 = 0
   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.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 = 100
   def __init__(self):
       print("调用父类构造函数")
   def parentMethod(self):
       print('调用父类方法')
   def setAttr(self, attr):
       Parent.parentAttr = attr
   def 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()			# 浅拷贝
Dict_dcopy = copy.deepcopy(Dict1)	# 深拷贝
Dict1['num'][1] = 6				# 修改原数据中嵌套列表的值
print('Dict1:'+str(Dict1),' Dict_copy:'+ str(Dict_copy),' Dict_dcopy:'+ str(Dict_dcopy))	
# Dict1:{‘name’:’lee’, ‘age’:89, ‘num’:[1,6,8]}			
# Dict_copy :{‘name’:’lee’, ‘age’:89, ‘num’:[1,6,8]}			# 浅拷贝数据一起被修改
# 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
5

An 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基础并为以后的学习做铺垫。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天海一直在AI

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

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

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

打赏作者

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

抵扣说明:

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

余额充值