记录优雅的pythonic代码
记录平时学习中接触到的和网上看到的一些pythonic的方法,只为日后查询时候方便。
1.列表推导式:
seq_list=[1,2,3,4,5]
new_list=[i *2 for i in seq_list if i %2==0 ]
2.生成器表达式(减少内存占用)
seq_list=(i*2 for i in range(0,1000) )
3.强大的内置函数zip,可遍历两个可迭代对象。在将行转换为列时特别有用。(但似乎zip函数在处理大的数据时速度会比较慢)
list_1 = [1,2,3,4,5,6,7,8]
list_2 = [7,6,5,4,3,2,1]
for element in zip(list_1,list_2)
print(element) ###############
(1,7)
(2,6)
(3,5)
(4,4)
(5,3)
(6,2)
(7,1) #list_1中多出的元素会被自动忽略
4.*用于解构可迭代对象
当一个函数,如person,需要将列表person_list中所有的元素作为参数传入时只需要person(*person_list)即可。
5.参数*args用于定义函数接受的参数为任意数目,所有参数储存在名为args的列表中
def person(*args):
for name in args:
print("the person is %s"%name) ###################### person('A','B','C','D','E') #例一
names = ['A','B','C','D','E']
person(*names) #运用*解构names列表,如同例一 the person is A
the person is B
the person is C
the person is D
the person is E
6.上下文管理器
with open('file','r') as fh:
for line in fh.readlines():
print(line)
___________________________
使用with而不使用旧版本中的最后添加fh.close()的方法。使用with语句,在读完文件或则中途发生异常时,会自动关闭文件。而fh.close()方法在发生异常时不会正常关闭文件(因为代码在中途就停止了,无法执行到fh.close())
7.进度条控制
import sys
import time
for i in range(1,61):
sys.stdout.write('#'+'->'+'\b\b')
sys.stdout.flush()
time.sleep(0.5)
8.列表去重
a=[1,2,3,4,5,3,2,2,1]
b=list(set(a))
9.将嵌套列表转为单一列表
a=[[1,2],[3,4],[5,6]]
import itertools
b=list(itertools.chain.from_iterable(a))
10.列表复制
list_a = [1,2,3]
list_b = list_a#这种方法并没有实现复制,只不过list_a和list_b共同指向同一块内存,即储存[1,2,3]的地方。
正确的复制方式:
list_b =list_a[:]
记录优雅的pythonic代码的更多相关文章
- 如何写出优雅的CSS代码 ?(转)
对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于团队合作和后期的维护:而有的混 ...
- 使用 Promises 编写更优雅的 JavaScript 代码
你可能已经无意中听说过 Promises,很多人都在讨论它,使用它,但你不知道为什么它们如此特别.难道你不能使用回调么?有什么了特别的?在本文中,我们一起来看看 Promises 是什么以及如何使用它 ...
- 如何写出优雅的css代码 ?
如何写出优雅的css代码 ? 对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于 ...
- 建议2---编写pythonic代码
(1)要避免劣化代码 1)避免只用大小写来区分不同的对象.如a是一个数值类型变量,A是String类型,虽在编码过程容易区分二者的含义,但这样做毫无益处,它不会给其他阅读代码的人带来多少便利. 2)避 ...
- ZT eoe android4.2 Bluetooth记录01-结构和代码分布
android4.2 Bluetooth记录01-结构和代码分布 作者:cnhua5更新于 08月21日访问(697)评论(2) 在android4.2中,Google更换了android的蓝牙协议栈 ...
- 如何写出优雅的JavaScript代码 ? && 注释
如何写出优雅的JavaScript代码 ? 之前总结过一篇<如何写出优雅的css代码?>, 但是前一段时间发现自己的js代码写的真的很任性,没有任何的优雅可言,于是这里总结以下写js时应当 ...
- 【原创】怎样才能写出优雅的 Java 代码?这篇文章告诉你答案!
本文已经收录自 JavaGuide (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. 本文比较简短,基本就是推荐一些对于写好代码非常有用的文章或者 ...
- 淘系工程师讲解的使用Spring特性优雅书写业务代码
使用Spring特性优雅书写业务代码 大家在日常业务开发工作中相信多多少少遇到过下面这样的几个场景: 当某一个特定事件或动作发生以后,需要执行很多联动动作,如果串行去执行的话太耗时,如果引入消息中 ...
- 写出优雅又地道的pythonic代码(转自网络)
本文是Raymond Hettinger在2013年美国PyCon演讲的笔记(视频, 幻灯片). 示例代码和引用的语录都来自Raymond的演讲.这是我按我的理解整理出来的,希望你们理解起来跟我一样顺 ...
随机推荐
- openstack pike 集群高可用 安装 部署 目录汇总
# openstack pike 集群高可用 安装部署#安装环境 centos 7 史上最详细的openstack pike版 部署文档欢迎经验分享,欢迎笔记分享欢迎留言,或加QQ群663105353 ...
- canvas入门之时钟的实现
canvas 入门之作: 三步实现一个时钟: 直接上效果: step 1 : 背景制作首先制作从1-12的数字: var canvas = document.getElementById('ca ...
- PHP生成xml 无法识别或是无法读取或是浏览器不识别等问题
PHP 数组转XML函数如下 [PHP] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
- C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原
C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原 我们以前讲SEH异常处理的时候已经说过了,C++中的Try catch语法只不过是对SEH做了一个封装. 如果不懂SEH异 ...
- SpringBoot运行原理
如果我们使用的是SpringApplication的静态run方法,那么,这个方法里面首先要创建一个SpringApplication对象实例,然后调用这个创建好的SpringApplication的 ...
- C语言简单实现链栈基本几个功能(适合新手看,大神可指正)
接着上一次的顺序栈,今天我记一下链栈,因为我也是刚学不久,有些地方也稍稍理解不了,所以,一起共勉.我会用我自己结合教材上画的图,争取跟代码一起结合,用文字和图最大化的解释代码,这样的话 ...
- 企业级Tomcat安全管理优化方案
telnet管理端口保护 1. 修改默认的8005管理端口为不易猜测的端口(大于1024): <Server port=" shutdown="dangerous" ...
- hdoj 1251 统计难题 【字典树】
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Subm ...
- 腾讯Web工程师的前端书单
2014年一月以来,自己接触web前端开发已经两年多了,记录一下自己前端学习路上看过的,以及道听途说的一些书,基本上按照由浅入深来介绍. JavaScript 入门 <JavaScript权威指 ...
- axios遇到的坑
axios 可以使用一个config.js 配置文件来管理它的请求信息.具体配置不细说,使用如下. 一,使用配置方式 GET方法: let promise = axios.get(url, con ...