记录平时学习中接触到的和网上看到的一些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代码的更多相关文章

  1. 如何写出优雅的CSS代码 ?(转)

    对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于团队合作和后期的维护:而有的混 ...

  2. 使用 Promises 编写更优雅的 JavaScript 代码

    你可能已经无意中听说过 Promises,很多人都在讨论它,使用它,但你不知道为什么它们如此特别.难道你不能使用回调么?有什么了特别的?在本文中,我们一起来看看 Promises 是什么以及如何使用它 ...

  3. 如何写出优雅的css代码 ?

    如何写出优雅的css代码 ? 对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于 ...

  4. 建议2---编写pythonic代码

    (1)要避免劣化代码 1)避免只用大小写来区分不同的对象.如a是一个数值类型变量,A是String类型,虽在编码过程容易区分二者的含义,但这样做毫无益处,它不会给其他阅读代码的人带来多少便利. 2)避 ...

  5. ZT eoe android4.2 Bluetooth记录01-结构和代码分布

    android4.2 Bluetooth记录01-结构和代码分布 作者:cnhua5更新于 08月21日访问(697)评论(2) 在android4.2中,Google更换了android的蓝牙协议栈 ...

  6. 如何写出优雅的JavaScript代码 ? && 注释

    如何写出优雅的JavaScript代码 ? 之前总结过一篇<如何写出优雅的css代码?>, 但是前一段时间发现自己的js代码写的真的很任性,没有任何的优雅可言,于是这里总结以下写js时应当 ...

  7. 【原创】怎样才能写出优雅的 Java 代码?这篇文章告诉你答案!

    本文已经收录自 JavaGuide (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. 本文比较简短,基本就是推荐一些对于写好代码非常有用的文章或者 ...

  8. 淘系工程师讲解的使用Spring特性优雅书写业务代码

    使用Spring特性优雅书写业务代码   大家在日常业务开发工作中相信多多少少遇到过下面这样的几个场景: 当某一个特定事件或动作发生以后,需要执行很多联动动作,如果串行去执行的话太耗时,如果引入消息中 ...

  9. 写出优雅又地道的pythonic代码(转自网络)

    本文是Raymond Hettinger在2013年美国PyCon演讲的笔记(视频, 幻灯片). 示例代码和引用的语录都来自Raymond的演讲.这是我按我的理解整理出来的,希望你们理解起来跟我一样顺 ...

随机推荐

  1. php XSS安全过滤代码

    function remove_xss($val) { // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are ...

  2. GIL(全局解释器锁)

    引入 现在绝大部分的Python都是CPython解释器(但不是必须使用CPython解释器),而CPython的一个特性就是有GIL,作用保证解释器级别的代码在运行时不被其他的线程进行修改,即加锁处 ...

  3. 浅析文本挖掘(jieba模块的应用)

    一,文本挖掘 1.1,什么是文本挖掘 文本挖掘是指从大量文本数据中抽取事先未知的,可理解的,最终可用的知识的过程,同时运用这些知识更好的组织信息以便将来参考 1.2,文本挖掘基本流程 收集数据 数据集 ...

  4. Linux多线程编程——线程的创建与退出

    POSIX线程标准:该标准定义了创建和操纵线程的一整套API.在类Unix操作系统(Unix.Linux.Mac OS X等)中,都使用Pthreads作为操作系统的线程.Windows操作系统也有其 ...

  5. 运行期以索引获取tuple元素-C++14(原创)

    在编译期很容易根据索引来获取对应位置的元素,因为 tuple 的帮助函数 std::get<N>(tp) 就能获取 tuple 中第 N 个元素.然而我们却不能直接在运行期通过变量来获取 ...

  6. Mac: Android studio+VirtualBox+Genymotion

    针对 Mac Yosemite 10.10.4 操作系统 1.在Android Studio 中preferences 中的Plugins 中安装Genymotion插件. Android Studi ...

  7. J2EE十三个规范小结

    J2ee是我们步入java学习的一个開始.它将开启这趟奇幻之旅,Java是一种简单的,跨平台的,面向对象的,分布式的.解释的.健壮的安全的.结构的中立的,可移植的.性能非常优异的多线程的,动态的语言. ...

  8. iOS有关图片处理的总结 (四)------图片的饱和度,亮度,对照度。

    在做图片处理的时候.会遇到调节图片的饱和度的问题,这里就要用到Core Image这个框架,Core Image是一个非常强大的框架. 它能够让你简单地应用各种滤镜来处理图像,比方改动鲜艳程度, 色泽 ...

  9. android studio 使用adb命令传递文件到android设备

    一:文件传输 在android开发中,有时候需要将文件从pc端传递至android,或者将软件运行的日志,从android设备传递到pc进行分析,我们可以使用windows的cmd窗口,或者andro ...

  10. java集合框架(Collections Framework)

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...