pep

pythonic风格代码有什么好处?附12个代码实例

淺唱寂寞╮ 提交于 2021-02-20 17:20:09
pythonic是开发者们在写python代码过程中总结的编程习惯,崇尚优雅、明确、简单。就好比中文笔画,有先后顺序,最符合文字书写的习惯。 因为是习惯,不是江湖规则,所以你大可不必遵守pythonic,但如果你想成为python高手,最好是养成这个习惯。 对比其他语言我们能直观看出pythonic风格的特点,比如写一个简单循环。 在Java里这样的: for index in (index; index < items.length ; index++) { item = items[index]; ... now do something } 尝试用python来写循环,则非常简洁易懂: for item in items: item.perform_action() 想要更加pythonic,用生成器表达式来写循环: (item.some_attribute for item in items) 这样的写法其实已经接近自然语言,一眼能看出代码意思。 如果你在Python IDE中输入 import python ,则会看到下面一首诗: 美胜于丑,简胜于繁,这就是Python哲学。 有一本书《effctive python》里面讲到蛮多pythonic的写法,下面列出一些常见的代码。 「1、用列表推导式来取代map、filter」 map

noip第12课作业

萝らか妹 提交于 2021-02-16 10:15:22
1. 输出低于班级平均分的学生信息 【问题描述】 输入N个学生的姓名和语文、数学的得分,求平均分低于班级平均分的学生,将其信息全部输出。分数相同的按输入先后输出。 输入格式:第1行,有一个整数N,N的范围是[1…100];下面有N行,每行一个姓名(字符串),2个整数。姓名由不超过10个的小写字母组成,整数范围是[0…100]。 输出格式:平均分低于班级平均分的学生信息。格式:姓名 语文 数学 平均分。每个学生占一行。如果没有,输出none。 【样例输入】 4 gaoxiang 78 96 wangxi 70 99 liujia 90 87 zhangjin 78 73 【样例输出】 zhangjin 78 73 75.5 #include<iostream> #include < string > using namespace std; struct student { string name; int chinese,math; double avg; }; student stu[ 101 ]; double total = 0 ; int main() { int n; cin >> n; for ( int i= 0 ; i<n; i++ ) { cin >> stu[i].name >> stu[i].chinese >> stu[i].math; stu[i].avg

写出漂亮 Python 代码的 20条准则

拟墨画扇 提交于 2021-02-15 16:58:05
文章来源于公众号:架构头条 作者 | Hannibal Liang 策划 | 万佳 ↑ 关注 + 星标 , 后台回复【 大礼包 】送你Python自学大礼包 按照《代码整洁之道》的说法,“花在阅读和编码上的时间比远远超过 10:1。” 通常,当我们在学校学习时,编程美学不是一个关键问题。用 Python 写代码时,个人也会遵循自己的风格。然而,当我们必须花大把时间来理解一个人的隐式代码时,这项工作肯定不受欢迎,这种情况同样可能发生在别人阅读我们的代码时。所以,让我们聚焦 Python 之禅和一些改进技巧,从而解决问题。 1 Python 之禅? 对于此前没听说过的人,请在 Python 解释器中键入并执行 import this ,会出现由 Tim Peters 撰写的 19 条指导原则: 优美胜于丑陋; 明了胜于晦涩; 简单胜于复杂; 复杂胜于晦涩; 扁平胜于嵌套; 间隔胜于紧凑; 可读性很重要; 特例不足以特殊到违背这些原则; 实用性胜过纯粹; 永远不要默默地忽视错误; 除非明确需要这样做; 面对模棱两可,拒绝猜测; 解决问题最直接的方法应该有一种,最好只有一种; 当然这是没法一蹴而就的,除非你是荷兰人; 做也许好过不做; 但不想就做还不如不做; 如果方案难以描述明白,那么一定是个糟糕的方案; 如果实现容易描述,那可能是个好方案; 命名空间是一种绝妙的理念,多加利用!

Python 从业十年是种什么体验?

主宰稳场 提交于 2021-02-14 14:27:08
点击上方“ 咸鱼学Python ”,选择“ 加为星标 ” 第一时间关注Python技术干货! 作者: laisky(基于 CC BY 4.0 授权许可) 原题: Python之路(内容略有调整) 来源: https://laisky.com/p/python-road 一、概述 本文起源于我在 Twitter 上发布的关于 Python 经历的一系列话题。 出于某些原因,想记录一下我过去数年使用 Python 的经验和一些感悟。毕竟算是一门把我带入互联网行业的语言,而我近期已经几乎不再写 Py 代码, 做一个记录,也许会对他人起到些微的帮助,也算是纪念与感恩了。 二、摘录 推文地址:https://twitter.com/ppcelery/status/1159620182089728000 最早接触 py 是 2010 年左右,那之前主要是使用 c、fortran 和 matlab 做数值运算。当时在做一些文件文本处理时觉得很麻烦,后来看到 NASA 说要用 py 取代 matlab,就去接触了 py。 python 那极为简洁与优美的语法给了当时的我极大的震撼,时至今日,写 py 代码对我而言依然是一种带有艺术意味的享受。 首先开宗明义的说一句:python 并不慢,至少不够慢。拿一个 web 后端来说,一台垃圾 4 核虚机,跑 4 个同步阻塞的 django,假设

Python 从业十年是种什么体验?

a 夏天 提交于 2021-02-13 17:51:45
点击“ Python编程与实战 ”,选择“置顶公众号” 第一时间获取 Python 技术干货! 作者: laisky(基于 CC BY 4.0 授权许可) 原题: Python之路(内容略有调整) 来源: https://laisky.com/p/python-road 一、概述 本文起源于我在 Twitter 上发布的关于 Python 经历的一系列话题。 出于某些原因,想记录一下我过去数年使用 Python 的经验和一些感悟。毕竟算是一门把我带入互联网行业的语言,而我近期已经几乎不再写 Py 代码, 做一个记录,也许会对他人起到些微的帮助,也算是纪念与感恩了。 二、摘录 推文地址:https://twitter.com/ppcelery/status/1159620182089728000 最早接触 py 是 2010 年左右,那之前主要是使用 c、fortran 和 matlab 做数值运算。当时在做一些文件文本处理时觉得很麻烦,后来看到 NASA 说要用 py 取代 matlab,就去接触了 py。 python 那极为简洁与优美的语法给了当时的我极大的震撼,时至今日,写 py 代码对我而言依然是一种带有艺术意味的享受。 首先开宗明义的说一句:python 并不慢,至少不够慢。拿一个 web 后端来说,一台垃圾 4 核虚机,跑 4 个同步阻塞的 django,假设

缩进,unexpected indent

a 夏天 提交于 2021-02-11 21:27:35
用4个空格,或者设置Tab代替4个空格。 对Spyder设置PEP8规则检测警告,可以有效改善编码习惯: Preferences > Editor > Code Introspection/Analysis,然后勾选Style analysis(PEP8)。 https://blog.csdn.net/zxy131072/article/details/86147031 在不同的编辑器里tab的长度可能不一致,所以在一个编辑器里用tab设置缩进后,在其它编辑器里看可能缩进就乱了。空格不会出现这个问题,因为空格就占一个字符的位置。Tab在ASCII码中,编码是9,而空格是32。其实,很多IDE对Tab键做了各种各样的优化,其中有一条就是,将Tab键展开为为空格,也就是说,当你按下Tab的时候,IDE实际上帮你把一个「9」转换成了四个(或者八个)「32」。但是要注意,不是所有的IDE都帮你做了这样的工作!既然Tab在不同的环境下展现不一样,而空格却永远都是一样的。对于一些细致排版缩进来说(比如说想把每一行的注释都对齐),用空格也更加精确。这样看起来,确实是用空格来写代码要好于用Tab。 简单来说, 因为 python 用缩进来取代了 {} , 而空格或是 tab 都是合乎语法的缩进, 但因为空格和 tab 都是看不到的, 所以, 为了避免有人时而用 tab, 时而用空格来做缩进而做成了

懂一点Python系列——快速入门

青春壹個敷衍的年華 提交于 2021-02-11 11:39:56
“ 本文面相有 一定编程基础 的朋友学习,所以略过了 环境安装 、 IDE 搭建 等一系列简单繁琐的事情。 一、Python 简介 Python 英文原意为 “蟒蛇” ,直到 1989 年荷兰人 Guido van Rossum (简称 Guido)发明了一种 面向对象 的 解释型 编程语言,并将其命名为 Python,才赋予了它表示一门编程语言的含义。 “ 说到 Python 的诞生,极具戏剧色彩,据 Guido 的自述记载,Python 语言是他在圣诞节期间为了打发时间开发出来的,之所以会选择 Python 作为该编程语言的名字,是因为他是一个叫 Monty Python 戏剧团体的忠实粉丝。 ■ 解释型 vs 编译型 作为电子元器件的 计算机 ,实际上 只能 识别某些 特定的二进制指令 (特殊的 01 组合) ,但由于 人类阅读 这些 指令 非常难以阅读,加上使用这些指令编写程序的 耗时 太过于 冗长 ,所以,人们在此基础上再次制定了一套规范,采用特定的 人类可阅读 的代码编写,待到要执行时再 翻译 回特定二进制指令,这样就帮助了人们更加轻松地理解和阅读程序逻辑了。 这也就是所谓现在的 "高级编程语言" 了。 上述 翻译 这个过程 (其实相当复杂,涉及语法分析、语义分析、性能优化等等..) 其实也是由一个特定程序来执行的,那 什么时候将源代码翻译成二进制指令呢?

Python中匿名函数与内置高阶函数详解

烂漫一生 提交于 2021-02-03 05:47:32
点击上方 『 早起Python』 关注并 星标 第一时间接收最新Python干货! 大家好,从今天起早起Python将持续更新由小甜同学从 初学者的角度 学习Python的笔记,其特点就是全文大多由 新手易理解 的 代码与注释及动态演示 。刚入门的读者千万不要错过! 为了配合 Python办公自动化 系列文章,本文带来的是 偷学Python第二十四天: Python中匿名函数与内置高阶函数使用,其他内容将在近期更新完毕,本文目录如下 匿名函数 如果我们需要定义一个特别简单的函数,例如 def add (a, b) : s = a + b return s 这就出现问题了,这么优雅的Python怎么可以出现这种难看的代码呢,有没有办法可以将其简化为1行代码呢?这么优雅的Python肯定有办法将其简化的方法啊!这要用到匿名函数了。P ython中使用 lambda 关键字来创建匿名函数。 lambda [参数 1 [,参数 2 ,..参数n]]:表达式 示例代码 """ -*- coding:uft-8 -*- author: 小甜 time:2020/5/23 """ news_add = lambda a, b: a + b # 上面的那个等于 def news_add_old (a, b) : return a + b x = news_add_old( 5 , 10 ) y =

Python中匿名函数与内置高阶函数详解

人走茶凉 提交于 2021-02-03 05:47:16
本文从 初学者的角度 学习Python的笔记,其特点就是全文大多由 新手易理解 的 代码与注释及动态演示, 刚入门的读者千万不要错过! 本文目录如下: 匿名函数 如果我们需要定义一个特别简单的函数,例如 def add (a, b) : s = a + b return s 这就出现问题了,这么优雅的Python怎么可以出现这种难看的代码呢,有没有办法可以将其简化为1行代码呢?这么优雅的Python肯定有办法将其简化的方法啊!这要用到匿名函数了。P ython中使用 lambda 关键字来创建匿名函数。 lambda [参数 1 [,参数 2 ,..参数n]]:表达式 示例代码 """ -*- coding:uft-8 -*- author: 小甜 time:2020/5/23 """ news_add = lambda a, b: a + b # 上面的那个等于 def news_add_old (a, b) : return a + b x = news_add_old( 5 , 10 ) y = news_add( 5 , 10 ) # 调用匿名函数 print(x, y) # 15 15 结合内置函数使用 """ -*- coding:uft-8 -*- author: 小甜 time:2020/5/23 """ list1 = [{ "a" : 10 , "b" : 20

决策树

人盡茶涼 提交于 2021-02-01 11:36:46
概要 决策树也是我们经常使用的样本归类算法。简单来说,它就是 if-else 的判断集合,本文就详细介绍其原理,还有例子实现。依然参考《机器学习实战》。 基本理论 决策树是通过一系列规则对数据进行分类的过程。 决策树利用了概率论的原理,不断地将数据切分成小数据集,直到所有目标变量完全相同,或者数据不能再切分为止。并且利用一种树形图作为分析工具。其基本原理是用决策点代表决策问题,用方案分枝代表可供选择的方案,用概率分枝代表方案可能出现的各种结果,经过对各种方案在各种结果条件下损益值的计算比较,为决策者提供决策依据。 决策树是一种贪心算法 ,要在给定时间内做出最佳选择,但并不关心能否达到最优。 ###决策树的实现 决策树的实现主要分为三个步骤: 特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。 决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止。 剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。 划分数据集的最大原则是: 使无序的数据变的有序 。如果一个训练数据中有20个特征,那么选取哪个做划分依据?这就必须采用量化的方法来判断,量化划分方法有多重,其中一项就是“信息论度量信息分类”