9个提高 Python 编程的小技巧

目录
  • 01 交换变量
  • 02 字典推导和集合推导
  • 03 计数时使用Counter计数对象
  • 04 漂亮的打印出JSON
  • 05 解决FizzBuzz
  • 06 连接
  • 07 数值比较
  • 08 同时迭代两个列表
  • 09 带索引的列表迭代

前言:

初识Python语言,觉得python满足了你上学时候对编程语言的所有要求。python语言的高效编程技巧让那些曾经苦逼学了四年c或者c++的人,兴奋的不行不行的,终于解脱了。高级语言,如果做不到这样,还扯啥高级呢?

01 交换变量

>>>a=3
>>>b=6

这个情况如果要交换变量在c++中,肯定需要一个空变量。但是python不需要,只需一行,大家看清楚了

>>>a,b=b,a
>>>print(a)>>>6
>>>ptint(b)>>>5

02 字典推导和集合推导

字典推导(Dictionary comprehensions)和集合推导(Set comprehensions)

大多数的Python程序员都知道且使用过列表推导(list comprehensions)。如果你对list comprehensions概念不是很熟悉——一个list comprehension就是一个更简短、简洁的创建一个list的方法。

>>> some_list = [1, 2, 3, 4, 5]
>>> another_list = [ x + 1 for x in some_list ]
>>> another_list
[2, 3, 4, 5, 6]

自从python 3.1 起,我们可以用同样的语法来创建集合和字典表:

>>> # Set Comprehensions
>>> some_list = [1, 2, 3, 4, 5, 2, 5, 1, 4, 8]
>>> even_set = { x for x in some_list if x % 2 == 0 }
>>> even_set
set([8, 2, 4])
>>> # Dict Comprehensions
>>> d = { x: x % 2 == 0 for x in range(1, 11) }
>>> d
{1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False, 10: True}

在第一个例子里,我们以some_list为基础,创建了一个具有不重复元素的集合,而且集合里只包含偶数。而在字典表的例子里,我们创建了一个key是不重复的1到10之间的整数,value是布尔型,用来指示key是否是偶数。这里另外一个值得注意的事情是集合的字面量表示法。

我们可以简单的用这种方法创建一个集合:

>>> my_set = {1, 2, 1, 2, 3, 4}
>>> my_set
set([1, 2, 3, 4])

而不需要使用内置函数set()。

03 计数时使用Counter计数对象

这听起来显而易见,但经常被人忘记。对于大多数程序员来说,数一个东西是一项很常见的任务,而且在大多数情况下并不是很有挑战性的事情——这里有几种方法能更简单的完成这种任务。

Python的collections类库里有个内置的dict类的子类,是专门来干这种事情的:

>>> from collections import Counter
>>> c = Counter( hello world )
>>> c
Counter({ l : 3,  o : 2,    : 1,  e : 1,  d : 1,  h : 1,  r : 1,  w : 1})
>>> c.most_common(2)
[( l , 3), ( o , 2)]

04 漂亮的打印出JSON

JSON是一种非常好的数据序列化的形式,被如今的各种API和web service大量的使用。使用python内置的json处理,可以使JSON串具有一定的可读性,但当遇到大型数据时,它表现成一个很长的、连续的一行时,人的肉眼就很难观看了。

为了能让JSON数据表现的更友好,我们可以使用indent参数来输出漂亮的JSON。当在控制台交互式编程或做日志时,这尤其有用:

>>> import json
>>> print(json.dumps(data))  # No indention
{"status": "OK", "count": 2, "results": [{"age": 27, "name": "Oz", "lactose_intolerant": true}, {"age": 29, "name": "Joe", "lactose_intolerant": false}]}
>>> print(json.dumps(data, indent=2))  # With indention
{
  "status": "OK",
  "count": 2,
  "results": [
    {
      "age": 27,
      "name": "Oz",

      "lactose_intolerant": true
    },
    {
      "age": 29,

      "name": "Joe",
      "lactose_intolerant": false
    }
  ]
}

同样,使用内置的pprint模块,也可以让其它任何东西打印输出的更漂亮。

05 解决FizzBuzz

前段时间Jeff Atwood 推广了一个简单的编程练习叫FizzBuzz,问题引用如下:

写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。

这里就是一个简短的,有意思的方法解决这个问题:

for x in range(1,101):
    print"fizz"[x%3*len( fizz )::]+"buzz"[x%5*len( buzz )::] or x
06 if 语句在行内
print "Hello" if True else "World"
>>> Hello

06 连接

下面的最后一种方式在绑定两个不同类型的对象时显得很cool。

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
print nfc + afc
>>> [ Packers ,  49ers ,  Ravens ,  Patriots ]
print str(1) + " world"
>>> 1 world
print `1` + " world"
>>> 1 world
print 1, "world"
>>> 1 world
print nfc, 1
>>> [ Packers ,  49ers ] 1

07 数值比较

这是我见过诸多语言中很少有的如此棒的简便法

x = 2
if 3 > x > 1:
   print x
>>> 2
if 1 < x > 0:
   print x
>>> 2

08 同时迭代两个列表

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
for teama, teamb in zip(nfc, afc):
     print teama + " vs. " + teamb
>>> Packers vs. Ravens
>>> 49ers vs. Patriots

09 带索引的列表迭代

teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, team in enumerate(teams):
    print index, team
>>> 0 Packers
>>> 1 49ers
>>> 2 Ravens
>>> 3 Patriots

到此这篇关于9个提高 Python 编程的小技巧的文章就介绍到这了,更多相关Python 技巧内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python的网络编程库Gevent的安装及使用技巧

    安装(以CentOS为例) gevent依赖libevent和greenlet: 1.安装libevent 直接yum install libevent 然后配置python的安装 2.安装easy_install (1) wget -q http://peak.telecommunity.com/dist/ez_setup.py (2)使用 python ez_setup.py (3)使用easy_install 查看命令是否可用,如果不可用可以讲路径加入到PATH中 3.安装greenlet

  • 分享Python 的24个编程超好用技巧

    目录 1.ALLORANY 2.BASHPLOTIB 3.COLLECTIONS 4.DIR 5.EMOJI 6.FROM_FUTURE_IMPORT 7.GEOPY 8.HOWDOI 9.INSPECT 10.JEDI 11.**KWARGS 12.LISTCOMPREHENSIONS 13.MAP 14.NEWSPAPER3K 15.OPERATOROVERLOADING(操作符重载) 16.PPRINT 17.QUEUE(队列) 18.sh 19.TYPEHINT(类型提示) 20.UUI

  • Python编程技巧连接列表的八种操作方法

    目录 1. 最直观的相加 2. 借助 itertools 3. 使用 * 解包 4. 使用 extend 5. 使用列表推导式 6. 使用 heapq 8. 使用 yield from Python 语言里有许多(而且是越来越多)的高级特性,是 Python 发烧友们非常喜欢的.在这些人的眼里,能够写出那些一般开发者看不懂的高级特性,就是高手,就是大神. 但你要知道,在团队合作里,炫技是大忌. 为什么这么说呢?我说下自己的看法: 越简洁的代码,越清晰的逻辑,就越不容易出错: 在团队合作中,你的代

  • python编程开发之textwrap文本样式处理技巧

    本文实例讲述了python编程开发之textwrap文本样式处理技巧.分享给大家供大家参考,具体如下: 在看python的API的时候,发现python的textwrap在处理字符串样式的时候功能强大 在这里我做了一个demo: textwrap提供了一些方法: wrap(text, width = 70, **kwargs):这个函数可以把一个字符串拆分成一个序列 from textwrap import * #使用textwrap中的wrap()方法 def test_wrap(): tes

  • 分享18 个 Python 高效编程技巧

    目录 01 交换变量 02 字典推导(Dictionary comprehensions)和集合推导(Set comprehensions) 03 计数时使用Counter计数对象. 04 漂亮的打印出JSON 05 解决FizzBuzz 06 if 语句在行内 07 连接 08 数值比较 09 同时迭代两个列表 10 带索引的列表迭代 11 列表推导式 12 字典推导 13 初始化列表的值 14 列表转换为字符串 15 从字典中获取元素 16 获取列表的子集 17 迭代工具 18 False

  • 3 个超有用的 Python 编程小技巧

    目录 1.如何按照字典的值的大小进行排序 2.优雅的一次性判断多个条件 3.如何优雅的合并两个字典 1.如何按照字典的值的大小进行排序 我们知道,字典的本质是哈希表,本身是无法排序的,但 Python 3.6 之后,字典是可以按照插入的顺序进行遍历的,这就是有序字典,其中的原理,可以阅读 Python3.6 之后字典是有序的? . 知道了这一点,就好办了,先把字典的键值对列表排序,然后重新插入新的字典,这样新字典就可以按照值的大小进行遍历输出. 代码如下: >>> xs = {'a':

  • python编程控制Android手机操作技巧示例

    目录 你应该拥有的东西 安装 开始 轻敲 截图 高级点击 TemplateMatching 滑动 打电话给某人 从手机下载文件到电脑 手机录屏 打开手机 发送 Whatsapp 消息 几天前我在考虑使用 python 从 whatsapp 发送消息.和你们一样,我开始潜伏在互联网上寻找一些解决方案并找到了关于twilio. 一开始,是一个不错的解决方案,但它不是免费的,我必须购买一个 twilio 电话号码.此外,我无法在互联网上找到任何可用的 whatsapp API.所以我放弃了使用 twi

  • 3个 Python 编程技巧

    目录 1.如何按照字典的值的大小进行排序 2.优雅的一次性判断多个条件 3.如何优雅的合并两个字典 今天分享 3 个 Python 编程小技巧,来看看你是否用过? 1.如何按照字典的值的大小进行排序 我们知道,字典的本质是哈希表,本身是无法排序的,但 Python 3.6 之后,字典是可以按照插入的顺序进行遍历的,这就是有序字典,其中的原理,可以阅读为什么 Python3.6 之后字典是有序的. 知道了这一点,就好办了,先把字典的键值对列表排序,然后重新插入新的字典,这样新字典就可以按照值的大小

  • 9个提高 Python 编程的小技巧

    目录 01 交换变量 02 字典推导和集合推导 03 计数时使用Counter计数对象 04 漂亮的打印出JSON 05 解决FizzBuzz 06 连接 07 数值比较 08 同时迭代两个列表 09 带索引的列表迭代 前言: 初识Python语言,觉得python满足了你上学时候对编程语言的所有要求.python语言的高效编程技巧让那些曾经苦逼学了四年c或者c++的人,兴奋的不行不行的,终于解脱了.高级语言,如果做不到这样,还扯啥高级呢? 01 交换变量 >>>a=3 >>

  • C/C++中提高查找速度的小技巧

    前言 当看到题目是在一个数组中查找某一个元素,或是在一个字符串中查找某个字符,我们一般都会写出如下代码.但这样的代码虽然简洁明了,但在数组元素很多的情况下,并不是一个很好的解决方案,今天我就来分享一个提高查找速度的小技巧. //在一个int数组中查找某个元素 int find(int A[],int n,int element) { for( int i = 0; i < n; i++ ) { if( A[i] == element ) return i; } return -1; } //在一

  • 提高iOS开发的小技巧和思路小结 (二)

    前言 之前跟大家分享过一篇<提高iOS开发的小技巧和思路>,但是里面整理的不够全面,通过最近这段时间的整理学习,又整理了一些小技巧和思路分享给大家,下面话不多说了,来看看详细的介绍吧. 一.如何让你的app在后台持续运行一段时间 iOS的app在按下home键的时候,只有不到五秒钟的时间去处理保存或者是清楚资源的工作,这里提供一种办法.(这是在唐巧的书上面学习的) 产品经理的需求:如果app的本地持久化的额图片超过了100mb,需要去清除. 我之前的做法是在程序启动的时候去做这个事情,很显然效

  • 值得收藏的9个提高代码运行效率的小技巧(推荐)

    我们写程序的目的就是使它在任何情况下都可以稳定工作.一个运行的很快但是结果错误的程序并没有任何用处.在程序开发和优化的过程中,我们必须考虑代码使用的方式,以及影响它的关键因素.通常,我们必须在程序的简洁性与它的运行速度之间做出权衡.今天我们就来聊一聊如何优化程序的性能. 1. 减小程序计算量 1.1 示例代码 for (i = 0; i < n; i++) { int ni = n*i; for (j = 0; j < n; j++) a[ni + j] = b[j]; } 1.2 分析代码

  • 十条建议帮你提高Python编程效率

    程序员的时间很宝贵,Python这门语言虽然足够简单.优雅,但并不是说你使用Python编程,效率就一定会高.要想节省时间.提高效率,还是需要注意很多地方的. 今天就与大家分享资深Python程序员总结的10点建议,帮助大家大幅节省开发时间. 1. 不使用分号 使用分号在 Python 中是可选的:与其他面向对象语言不同,你不需要在每一条语句后面使用分号. 这看起来很简单,似乎也节省不了多少时间:但一旦你的代码量扩展到数千号,这些分号就变得分心且没有必要键入. 2. 使用称手的代码编辑器 选择一

  • python中requests小技巧

    关于  Python requests ,在使用中,总结了一些小技巧把,记录下. 1:保持请求之间的Cookies,我们可以这样做. 2:请求时,会加上headers,一般我们会写成这样 唯一不便的是之后的代码每次都需要这么写,代码显得臃肿,所以我们可以这样: 3:默认requests请求失败后不会重试,但是我们跑case时难免遇到一些网络或外部原因导致case失败,我们可以在Session实例上附加HTTPAdapaters 参数,增加失败重试次数. 这样,之后的请求,若失败,重试3次. 4:

  • 儿童学习python的一些小技巧

    以下是一些Python实用技巧和工具,希望能对大家有所帮助. 交换变量 x = 6 y = 5 x, y = y, x print x >>> 5 print y >>> 6 if 语句在行内 print "Hello" if True else "World" >>> Hello 连接 下面的最后一种方式在绑定两个不同类型的对象时显得很cool. nfc = ["Packers", &quo

  • Python爬虫常用小技巧之设置代理IP

    设置代理IP的原因 我们在使用Python爬虫爬取一个网站时,通常会频繁访问该网站.假如一个网站它会检测某一段时间某个IP的访问次数,如果访问次数过多,它会禁止你的访问.所以你可以设置一些代理服务器来帮助你做工作,每隔一段时间换一个代理,这样便不会出现因为频繁访问而导致禁止访问的现象. 我们在学习Python爬虫的时候,也经常会遇见所要爬取的网站采取了反爬取技术导致爬取失败.高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网页,就很可能被封,所以下面这篇文

  • Python编程实现小姐姐跳舞并生成词云视频示例

    目录 制作过程分为以下几个部分 1.视频下载 2.B 站弹幕下载 3.视频切帧,人像分割 4.对分割后的图像制作词云图 5.图片拼接,合成视频 最后 Python做了一个词云视频,以另一种角度来看小姐姐跳舞 制作过程分为以下几个部分 1.视频下载 首先需要下载一个小姐姐跳舞的视频,这里我用的是 you-get 工具,可借助 Python 的 pip 命令进行安装 pip install you-get you-get 支持下载平台包括:Youtube.Blili.TED.腾讯.优酷.爱奇艺(涵盖

  • 低版本中Python除法运算小技巧

    首先要说的是python中的除法运算,在python 2.5版本中存在两种除法运算,即所谓的true除法和floor除法.当使用x/y形式进行除法运算时,如果x和y都是整形,那么运算的会对结果进行截取,取运算的整数部分,比如2/3的运算结果是0:如果x和y中有一个是浮点数,那么会进行所谓的true除法,比如2.0/3的结果是 0.66666666666666663.另外一种除法是采用x//y的形式,那么这里采用的是所谓floor除法,即得到不大于结果的最大整数值,这个运算时与操作数无关的.比如2

随机推荐