欢迎来到
魔术之家!!
肝了2天 将python基础知识配合代码注释讲解 短期快速上手来啦! 文本资源目录如下:
# python中变量不需要声明 但必须赋值 赋值后才能创建
print( 'hello world') # hello world yyds
机器学习 = ['决策树', "神经网络", '点乘向量积'] # 因为python使用 utf-8编码所以可以用中文
for i in 机器学习:
print(i)
# 如何用python中的数据结构/数据表示和存放数据
# 标准数据类型 = 【
# ”Number(数字):[’int.float,bool,complex(复数)'],
# “String(字符串)”,
# “list(列表)”,
# “Dictionary:字典”,
# “Set:(集合)”,
# “Tuple:(元组)"
# 】
import math
a = -3.5
b = abs(a) # absolute value
print(b)
c = math.sin(b)
print(c)
# 列表(List)
all_in_list = [
1,
'love',
True,
[1, 2, 3]
]
# 列表每个元素都是可变的,
# 列表中每个元素都是有序的,
# 列表可以容纳Python所有对象
print(all_in_list)
index = all_in_list[1]
index = all_in_list[-3]
index = all_in_list[0:2] # 列表的切片,顾头不顾尾,只有1到2,不包括2,
print(index)
# 列表的增删改查
all_in_list.append("hello world") # 附加最后一个元素
all_in_list.insert(0, "pre_hello") # 插入元素
print(all_in_list)
all_in_list.remove("hello world") # 删除指定元素
print(all_in_list)
del all_in_list[:2] # 删除元素
print(all_in_list)
all_in_list[0] = 100
print(all_in_list)
#for循环 #效率底 所以使用列表推导式
x = []
for i in range(10):
x.append(i)
#print(x)
#列表推导式
x = [i for i in range(3,10)]
y = [i**2 for i in range(3,10)]
z = [i**2 for i in range(3,10) if i%2==0] #输出偶数项
print(x)
print(y)
import math
n = 10
x = []
y = []
width = 2 * math.pi / n
# 方法一:for循环建立核心数据结构
for i in range(n):
x.append(i * width)
y.append(abs(math.sin(x[i]))) # 绝对值
sums = sum(y) * width # 求和函数
# 列表推导式建立核心数据结构(尽量不用for循环,时间复杂度高)
x = [i * width for i in range(n)]
y = [abs(math.sin(i * width)) for i in range(n)]
z = [abs(math.sin(i * width)) * width for i in range(n)]
sums = sum(z)
print(x)
print(y)
print(sums)
# python 操作符 大多与C语言类似
# 赋值 关系 运算 逻辑 等 (也是返回一个值)
# 逻辑
res = 1 < 2 < 3 # 不同时可以连续比较 猜测其在对 < > 进行重载 没有参数返回Boll型数据,又参数返回类继续比较
res = 'M' in 'Magic' # 判断是否在里面
print(res)
# 只有 if elif else while 没有switch了
# 条件判定语句 if 后面语句可以不用加()
if 1 < 2:
print('hello')
if 1 < 0:
print('hello')
else:
print("world")
if 1 < 0:
print('hello')
elif 1 < -1:
print("world")
else:
print("!")
# 冒泡排序法
x = [1, 2, 3, 4, 123, 1, 64, 1, -2]
n = len(x)
for i in range(n): # 循环次数更多,时间复杂度更高
for j in range(i): # 保证在循环中x[i]值最大,前面小于的不管他,一旦有一个x[j]>x[i] j+1后面也全大于 x[j] 和x[i]一直调换
if x[j] > x[i]: # 调换方法!!!
x[i], x[j] = x[j], x[i]
print(n)
print(x)
# 字符串
# 任何在这双引号的文字
# 单引号其实和双引号完全一样,但在开发时建议引入用单引号,
# '''三个引号被用于长段文字或说明,只要引号不结束,你就可以任意换行'''
# 字符串为不可变数据类型
string = "字符串"
string = '''hello
嘿嘿
world'''
string = 'my ,name'
print(string)
# 字符串基本用法,
# 拼接 char1 + char2 + char3,
# 重复 'word'*3,
# 转换 int(string),
# 切片与索引:
# str[-3],
# str[1:4],
# str[3:]
res = string[1] # 字符串索引
res = string[1:4] # 字符串索引
res = string * 3
res = string + ' is '
# 字符串自身属性
# 分割
res = string.split(sep=',')
# 默认按照空格切割开,可以设置separate设置隔开符
# 返回值是一个列表,
#注意!!!!:string是不可变的数据类型,不能对其数据进行改动, 除非对名字重新赋值
print(1,string)
string[1] = 'y' #报错!!
#小写变大写
res = string.upper()
print(res)
字典的创建 索引&增删改查
# 字典 大括号 ,列表 中括号
dictionary = {
'BIDU': 'baidu',
'SINA': 'sina',
'YOKU': 'youku',
}
# 键 - 值 成对出现;
# 键不能重复,
# 键不可更改,值可修改!!!!! 字符串也是 列表则可以
# 键来索引值
dic = {'h': 'hello', 0.5: [0.3, 0.5], 'w': 'world'}
# dic = {'h': 'hello', 0.5: [0.3, 0.5], 'w': 'world',[2]:2}
# 不能以列表为键!!前提是因为键是不可以变得,而序列是可以变的
print(dic)
demo = dic['h']
demo = dic[0.5] # 字典中的元素无先后顺序,只能用键来索引
print(demo)
# 字典的增删改查
# 修改
dic['h'] = 'hi'
# 增加
# 单个
dic['new'] = 'new dic' # 如果没有该键,会在字典末尾生成新的键值对
# 多个
dic.update({1: 2, 3: 4})
# 删除
# del dic #直接整个删掉
del dic['h']
# 字典推导式
d = {i: i ** 2 for i in range(10)}
d = {i: i ** 2 for i in range(10) if i % 2 == 0}
print(dic)
print(d)
# 文件操作
# 只读
f = open('beauty_live.text', 'r')
# 读取文件操作
txt = f.read()
txt = f.read(100) #设置读取字符的个数
# 因为是对文件以读的方式打开,
# 所以在读取文件指针后,
# 指向文件的指针指向文件尾,就无法再继续读取,需要将指针seek变为0
f.seek(0)
# 只读行(返回值是一个列表)
txt1 = f.readlines()
# txt1 = f.readline() #只读一行
f.close()
# print(txt1)
print(txt)
# 统计小说的单词频次
import re
# 查看当前路径
import os
path = os.getcwd() # current word directory 当前目录
print(path)
f = open('beauty_live.text', 'r') # 引入当前工程路径 , 如果移动了 需要绝对路径
txt = f.read() # 读取进来的数据类型是字符串
f.close()
txt = txt.lower()
# 去除小数点等符号 用‘’替代 就是空
re.sub('[,.?!"\'-]', '', txt)
# 由于使用分割后返回值是一个列表 无法使用re.sub 所以先处理在分割
txt = txt.split()
# 统计频次
word = {}
for i in txt:
if i not in word:
word[i] = 1
else:
word[i] += 1
# 对次数排序
sor = sorted(word.items(), key=lambda x: x[1], reverse=True)
print(txt)
print(word)
print(sor)
# 函数自定义
# 简单用lamdba
y = lambda x: x ** 2
y1 = lambda x: x[1]
# 复杂用def
def Sum(x=1, y=2): # 设置默认值同于c++,前面设置了后面必须避免歧义,可以只设置后面
return x + y
res = Sum()
demo = y(3)
demo = y1(['hello', 'world'])
print(res)
print(demo)
#求给定序列 偶数个数
def su(x):
z = 0
for i in x:
if i%2==0:
z +=1
return z
print(su([1,2,34,5,6,2,4,]))
# 面对对象编程
list = [2.4, 'hello', 'world']
list.append('hehe')
print(list)
string = 'myapp'
string.append('hi') # 对字符串对象而言 没有append方法 ,注意不是函数
list.split() # 同样不可以对列表对象 使用split方法 方法与对象挂钩
print(string)
# 创建自己的类
class human: # 方法是定义在类内的函数
def __init__(self, ag=None, se=None):
self.age = ag # 类的属性
self.sex = se
def square(self, x): # 方法
return x ** 2
zhangfei = human(ag=28, se='M') # 类的实例化
demo = zhangfei.square(3)
demo = zhangfei.age
print(demo)
# 模块是一个包含了所有你定义的函数的变量的文件,其后缀名为.py其实就是一个脚本文件
import math # 引入模块
import def_math
from def_math import Sum
res = math.sin(1) # 用模块调用
res = math.pi
from math import sin, pi # 从模块引入变量和函数 直接使用 面对多次使用的情况下,建议用此方法 !
# 导入模块全部变量和函数
from def_math import * # 不建议这样做 把全部引入 没有库名称区别 与其他库的函数名歧义
res = sin(2) # 在模块引入直接使用
res = 2 * pi
res = def_math.Sum(1, 3)
res = Sum(1, 3)
print(res)
模块def_math.py
def Sum(x, y):
return x + y
整套资源下载:
传送门在这!!