python技巧分享(二)

26 Jan 2018 python技巧分享(二)

这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。

1 如何在if语句中检测多个条件

  • 不推荐方式
flag1 = 1
flag2 = 0
flag3 = 0

if flag1 == 1 or flag2 == 1 or flag3 == 1:
    print 'ok'
  • 推荐方式
flag1 = 1
flag2 = 0
flag3 = 0

if 1 in (flag1, flag2, flag3):
    print 'ok'

可以看到,前一种方式重复代码太多,不推荐。后一种写法更简洁、易读。另外,其实也可以通过any函数实现,如下:

if any((flag1, flag2, flag3)):
    print 'ok'

2 如何从list中随机采样元素

import random


all_data = [num for num in range(100)]
sample_data = random.sample(all_data, 20)
print sample_data
# [71, 25, 58, 79, 70, 69, 93, 29, 11, 30, 40, 81, 12, 48, 91, 21, 83, 42, 38, 31]

这里是从100个元素中,随机采样20个元素。可以看到,借助random模块的sample函数可以很轻易实现采样功能。python的random模块很有意思,大家感兴趣可以看看,能实现很多有趣的功能。比如可以轻易实现“洗牌”功能:

import random


order_list = range(10)
print order_list
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(order_list)
print order_list
# [3, 5, 9, 0, 8, 7, 1, 2, 6, 4]

3 如何测试函数运行时间

  • 不推荐方式
import time


def func1():
    time.sleep(2)


begin_time = time.time()
func1()
passed_time = time.time() - begin_time
print passed_time
# 2.00099992752
  • 推荐方式
import time
from timeit import timeit


def func1():
    time.sleep(2)


print timeit(stmt="func1()",
             setup="from __main__ import func1",
             number=1)
# 2.00122451254

借助python的timeit模块,可以很轻易的测试出函数运行时间。在不知道timeit模块之前,我就是用前一种方式测试函数运行时间的,别笑。

LEo at 22:13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏文武兼修ing——机器学习与IC设计

Python硬件建模——链表FIFO管理器软件建模需求技术路线选择软件建模结构模型运行流程代码实现

软件建模需求 建立一个软件模型,在事物级对硬件链表FIFO管理器的各个部分进行建模,包括: RAM模型 链表地址管理模型 系统模型 能够模拟的行为包括: 初始化...

3927
来自专栏CDA数据分析师

如何在R中操作非结构化数据?

本文由CDA作者库成员HarryZhu原创,并授权发布。 CDA作者库凝聚原创力量,只做更有价值的分享。 ? 介绍 现代化数据科学中的 DataFrame 概念...

2539
来自专栏美团技术团队

Hades:移动端静态分析框架

作为全球最大的互联网 + 生活服务平台,美团点评近年来在业务上取得了飞速的发展。为支持业务的快速发展,移动研发团队规模也逐渐从零星的小作坊式运营,演变为千人级研...

1033
来自专栏ThoughtWorks

改善单元测试的新方法|洞见

鄢倩 ThoughtWorks 我们为什么要写单元测试? "满足需求"是所有软件存在的必要条件,单元测试一定是为它服务的。从这一点出发,我们可以总结出写单元测试...

2905
来自专栏进击的程序猿

袖珍分布式系统(三)

本文是Distributed systems for fun and profit的第三部分,本文是阅读该文后的一些记录。

762
来自专栏程序员的知识天地

JavaScript编程趋势:用map和filter替换forEach

当你需要拷贝一个数组的全部或者部分到一个新数组的时候,优先使用map和filter而不是forEach。

1243
来自专栏机器之心

比Python还好用的Go语言要出2.0了,你想怎么设计?

在昨天的 Go contributor 年度峰会上,与会者对错误处理和泛型的设计草案有了一个初步的了解。Go 2 的开发项目是去年宣布的,今天谷歌公布了这一语言...

1241
来自专栏牛客网

腾讯后台开发一面面经

一面大概一个小时,过去扫码专区等待,还有好多霸面的小伙伴。今天是LOL S7 小组赛最后一天,等待的时间赶紧看EDG 对SKT的最后一场关键的比赛,看到中间ED...

1.5K7
来自专栏PPV课数据科学社区

数据结构与算法–关键路径

关键路径与无环加权有向图的最长路径 现在考虑一个这样的问题:你今天事情比较多,要洗衣服、做作业还要烧水洗澡,之后出去找朋友玩。假设洗衣服要20分钟,烧水要30分...

3567
来自专栏数据小魔方

R语言数据清洗实战——复杂数据结构与list解析

数据清洗从来都不是一件简单的事情! 使用httr包结合浏览器抓包工具进行网页数据抓取虽然非常方便,但是获取的数据后期处理工作量却非常庞大的。 因为大部分json...

4025

扫码关注云+社区

领取腾讯云代金券