Python

Python开发的十个Tips,你知道几个?

译 | 王坚 整理 | AI时间

下面是十个Python中很有用的贴士和技巧。其中一些是初学这门语言常常会犯的错误。

注意:假设我们都用的是Python 3

1. 列表推导式

你有一个list:bag = [1, 2, 3, 4, 5]

现在你想让所有元素翻倍,让它看起来是这个样子:[2, 4, 6, 8, 10]

大多初学者,根据之前语言的经验会大概这样来做

bag = [1, 2, 3, 4, 5]
for i in range(len(bag)):
bag[i] = bag[i] * 2

但是有更好的方法:
bag = [elem * 2 for elem in bag]

很简洁对不对?这叫做Python的列表推导式。

2. 遍历列表

还是上面的列表。如果可能尽量避免这样做:
bag = [1, 2, 3, 4, 5]
for i in range(len(bag)):
print(bag[i])

取而代之的应该是这样:
bag = [1, 2, 3, 4, 5]
for i in bag:
print(i)

深度学习最常用到的20个Python库

【导读】Python在解决数据科学任务和挑战方面处于领先地位。而一些方便易用的库则帮助了开发人员高效开发。在这里我们整理了20个在深度学习、数据分析中最常用、最好用的Python库,供大家一起学习。

作者| ActiveWizards
编译|专知
整理|Yingying,李大囧

核心库与统计

NumPy

我们从科学应用程序库开始说起,NumPy是该领域的主要软件包之一。 它旨在处理大型多维数组和矩阵,并且广泛的高级数学函数和实现的方法集合,使得可以使用这些对象执行各种操作。

在这一年中,NumPy有很多更新。 除了错误修复和兼容性问题之外,关键更新还包括NumPy对象的打印格式。此外,某些函数现在可以处理Python中可用的任何编码的文件。

SciPy

另一个科学计算核心库是SciPy。它基于NumPy,并扩展了其功能。 SciPy主数据结构又是一个多维数组,由Numpy实现。该软件包包含有助于解决线性代数,概率论,积分计算和更多任务的工具。

SciPy可以适配不同的操作系统。这一年,Scipy带来了许多函数的更新,尤其是优化器也更新了。此外,封装了许多新的BLAS和LAPACK函数。

Python程序语法元素分析

程序的格式框架

下面是一段温度转换的代码示例:
#TempConvert.py
TempStr = input("请输入带有符号的温度值:")
if TempStr[-1] in['F','f']:
C = (eval(TempStr[0:-1]) - 32)/1.8
print("转换后的温度是{:.2f}F".format(F))
elif TempStr[-1] in['C','c']:
F = 1.8*eval(TempStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")

代码高亮是变成的色彩辅助体系,不是语法要求,可以检查基本语法拼写错误

在Python中,缩进是语法的一部分,所以不能够随意的加入缩进,否则会出现语法错误,缩进形式如下:

Python 语法基础之字符集编码

Python初学者编码实践中经常遇到encode error,decode error,如下:

例1:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u5728' in position 1

例2:
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 0-1: invalid continuation byte

1、百度的时候,大家都建议在代码文件头加上字符集定义:
# -*- coding: utf-8 -*-

这种方法大部分情况下可以解决大部分的问题。那么它解决的是什么问题呢?

我们需要理解两个概念:

1)、# -*- coding: utf-8 -*- 的作用是声明 python源代码文件的编码格式。 谁会读取Python的源代码呢? 一个是IDE编辑工具,比如pycharm,nodpad++,editpluss等,我们在写代码的时候使用。

2)、另一个是Python解释器,是执行Python程序的时候使用。

当我们使用IDE编辑器打开Python代码的时候,如果出现乱码,我们都知道是编辑器的解码方式和代码文件的编码方式不一致导致的。需要修改编辑器的解码方式。

如何用Python编写你最喜欢的R函数?

本文介绍了采用创建一个Python脚本,用该脚本模仿R风格的函数的方法来方便地进行统计。

是用R语言还是用Python语言?这是一个旷日持久的争论。在此,我们可以尝试采用折中路线:创建一个Python脚本,用该脚本模仿R风格的函数,来方便地进行统计!

简介
用R语言还是用Python语言?这是数据科学和机器学习的一场大的争论。毫无疑问,这两种语言在最近几年都取得了巨大的进展,成为数据科学、预测分析和机器学习的首选编程语言。事实上,在IEEE新近的一篇文章中,Python取代C++成为2018年的顶级编程语言,R已经牢牢地保住了它在前10名中的位置。

然而,这两种编程语言之间存在着一些本质的差异。R主要是为数据分析问题的统计分析和快速原型化而开发的工具。另一方面,Python作为一种通用的现代面向对象语言,与C或Java相似,它具有更简单的学习曲线和更为灵活的行为方式。因此,R在统计学家、定量生物学家、物理学家和经济学家中仍然非常受欢迎,而Python逐渐成为日常脚本、自动化、后端web开发、分析和通用机器学习框架的首选语言,Python语言的技术支持基础比较广泛,同时还有许多开源社区。

如何在Python环境中模仿函数式编程?

用Python 进行深度学习

摘要: 深度学习背后的主要原因是人工智能应该从人脑中汲取灵感。本文就用一个小例子无死角的介绍一下深度学习!

人脑模拟

深度学习背后的主要原因是人工智能应该从人脑中汲取灵感。此观点引出了“神经网络”这一术语。人脑中包含数十亿个神经元,它们之间有数万个连接。很多情况下,深度学习算法和人脑相似,因为人脑和深度学习模型都拥有大量的编译单元(神经元),这些编译单元(神经元)在独立的情况下都不太智能,但是当他们相互作用时就会变得智能。

我认为人们需要了解到深度学习正在使得很多幕后的事物变得更好。深度学习已经应用于谷歌搜索和图像搜索,你可以通过它搜索像“拥抱”这样的词语以获得相应的图像。-杰弗里·辛顿

神经元

神经网络的基本构建模块是人工神经元,它模仿了人类大脑的神经元。这些神经元是简单、强大的计算单元,拥有加权输入信号并且使用激活函数产生输出信号。这些神经元分布在神经网络的几个层中。

Python开发,请避开这些坑!

相比于其他语言,Python的语法比较简单易学,但一旦不注意细节,刚入门的新手很容易就会掉进语法错误的坑里。

1. 忘记写冒号

在 if、elif、else、for、while、class、def 语句后面忘记添加“:”

if spam == 42
print('Hello!')

2. 误用 “=” 做等值比较

“=”是给变量赋值,“==”才是判断两个值是否相等:

score = 60
if score = 60:
print ('passed')

改正:

score = 60
if score == 60:
print ('passed')

3. 变量没有定义:

if age >= 18:
print ('adult')
print ('END')

会导致:NameError: name ‘age’ is not defined.

改正:

age = 20
if age >= 18:
print ('adult')
print ('END')

【视频】Python 助力边缘分析与机器学习

本视频介绍 PYNQ 框架如何帮助软件工程师和数据科学家轻松获得工业设备的有价值的片上实时见解。

Python实现TFTP

一、TFTP协议简单介绍

1、定义

TFTP(Trivial File Transfer Protocol):简单文件传输协议)。

TFTP是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议,传输不复杂、开销不大的文件。端口号固定为69。

TFTP是一个传输文件的简单协议,它基于UDP协议而实现。

2、特点

简单、占用资源少、基于UDP实现、端口号为69、适合在局域网内传输小文件。

3、TFTP支持五种类型的包
opcode operation
1.Read request (RRQ)
2.Write request (WRQ)
3.Data (DATA)
4.Acknowledgment (ACK)
5.Error (ERROR)

二、TFTP数据包格式

1、读写请求

Python的22个编程技巧,Pick一下?

1. 原地交换两个数字

Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例:
x,y= 10,20print(x,y)x,y= y,xprint(x,y)#1 (10, 20)#2 (20, 10)

赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个(未被引用的)元组到变量 和 。

一旦赋值完成,新的元组变成了未被引用状态并且被标记为可被垃圾回收,最终也完成了变量的交换。

2. 链状比较操作符

比较操作符的聚合是另一个有时很方便的技巧:
n= 10result= 1< n< 20print(result)# Trueresult= 1> n<= 9print(result)# False

3. 使用三元操作符来进行条件赋值

三元操作符是 if-else 语句也就是条件操作符的一个快捷方式:
[表达式为真的返回值] if [表达式] else [表达式为假的返回值]

这里给出几个你可以用来使代码紧凑简洁的例子。下面的语句是说“如果 y 是 9,给 x 赋值 10,不然赋值为 20”。如果需要的话我们也可以延长这条操作链。

x = 10 if (y == 9) else 20

同样地,我们可以对类做这种操作:

同步内容