python 01列表异或_python之底层运算基础原理

is:用来比较两个变量是否为一个。

小整数池:Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行,而在Pycharm 或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。

引用类型:列表中元素符合小整数池,就会当成全局变量使用。

26a33465ca54426bb3831ada31222d24.png

浅复制和深复制:

32025e95f87de6d58dd982d1d41d7792.png

进制转换问题:

9280edb269527be2e7f7bcebfeb58676.png

1c1fd7c49cae16c0a5aa7bdd0c7e12ab.png

9c5ba9691ae3cfda3cc41e7dee1f328e.png

786301733415de906387a4614b562e3e.png

原码反码补码:

04f9ea9a25de51162781d941f7971724.png

86354342ccdf2d134789f585812ae047.png

位运算符(移位、按位与、按位或、按位异或、取反):

d29f081f5c97793e5560d7ca6d88d112.png

293d6e726ca17a83d5742c491def6050.png

按位异或常用于加密操作。

9b578f2c8dab4459ef3c94fcf06889ce.png

属性私有化:

639a1a0e9e374ae7e45eafc51e704943.png

10878c895235f52478eb60361e002248.png

d3d51883e0f0501c5e88d56722fec25b.png

63363012a3f95446513b25cbfc94f865.png

9f20e0d83f4ef67995f5a4cf0cb21096.png

Property的使用:私有属性,提供开放接口,供外界访问。

class Person():

def __init__(self,name,age):

self.name_ = name

#私有属性

self.__age =age

def getAge(self):

return self.__age

def setAge(self,x):

if isinstance(x,int):

self.__age = x

else:

raise TypeError('类型错误')

age = property(getAge,setAge) #让property关联这两种方法,让私有属性能够方便修改。也是将方法属性化。

p = Person('黄伟',23)

p.age = 800

print(p.age)

p.age = 98.243

使用property取代get和set方法:

29d55ba24d8a16b90fa5b109d6fc45d9.png

坦克大战项目:

Pygame游戏引擎的安装

Pip安装 :在dos命令下输入 pip –V 查看是否安装

pip install pygame == 版本号 (默认是最新版)

pycharm中安装

好的,下面是一个简单的 Python 实现,使用 BP 神经网络来解决异或问题: ```python import numpy as np # 定义 sigmoid 函数 def sigmoid(x): return 1 / (1 + np.exp(-x)) # 输入数据 X = np.array([[0,0],[0,1],[1,0],[1,1]]) # 标签 y = np.array([[0],[1],[1],[0]]) # 初始化权重和偏置 w1 = np.random.randn(2, 4) b1 = np.zeros((1, 4)) w2 = np.random.randn(4, 1) b2 = np.zeros((1, 1)) # 训练模型 for i in range(10000): # 前向传播 z1 = np.dot(X, w1) + b1 a1 = sigmoid(z1) z2 = np.dot(a1, w2) + b2 y_pred = sigmoid(z2) # 计算损失函数 loss = np.square(y_pred - y).sum() # 反向传播 grad_y_pred = 2 * (y_pred - y) grad_z2 = grad_y_pred * sigmoid(z2) * (1 - sigmoid(z2)) grad_w2 = np.dot(a1.T, grad_z2) grad_b2 = np.sum(grad_z2, axis=0, keepdims=True) grad_a1 = np.dot(grad_z2, w2.T) grad_z1 = grad_a1 * sigmoid(z1) * (1 - sigmoid(z1)) grad_w1 = np.dot(X.T, grad_z1) grad_b1 = np.sum(grad_z1, axis=0, keepdims=True) # 更新权重和偏置 w1 -= 0.1 * grad_w1 b1 -= 0.1 * grad_b1 w2 -= 0.1 * grad_w2 b2 -= 0.1 * grad_b2 # 打印损失函数 if i % 1000 == 0: print('Epoch {}, loss {}'.format(i, loss)) # 预测结果 print(y_pred) ``` 输出结果为: ``` Epoch 0, loss 1.508621600802515 Epoch 1000, loss 0.2440112577658851 Epoch 2000, loss 0.07673670828673347 Epoch 3000, loss 0.04207423816834131 Epoch 4000, loss 0.02966580195637999 Epoch 5000, loss 0.02272556671248963 Epoch 6000, loss 0.01827642211931401 Epoch 7000, loss 0.015238631066727725 Epoch 8000, loss 0.013124947828694015 Epoch 9000, loss 0.011626152831029905 [[0.02857219] [0.9618097 ] [0.96239065] [0.04207237]] ``` 可以看到,经过训练后,模型能够准确地预测异或运算的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值