鱼C论坛

 找回密码
 立即注册
查看: 7931|回复: 62

[技术交流] 0068 - 那些“diǎo diǎo”的内置函数 | 【剧透‘暗网’板块】

[复制链接]
回帖奖励 6 鱼币 回复本帖可获得 3 鱼币奖励! 每人限 1 次(中奖概率 90%)
发表于 2018-12-8 11:21:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
lol-tencent-2015-12-17-01.jpg


有言在先,先学习,后吹水,彩蛋在最后哈

分享几个很牛x的Python内置函数,每个学习Python的鱼油都应该了解并上手体验下。

对于每个函数,本人会使用一个通俗易懂的实现来和内置函数做对比。

有的直接引用了内置函数的文档,请理解,因为这些函数文档写的非常奈斯了,没必要重复造轮子。

giphy.gif





all(iterable)

如果可迭代的对象(数组,字符串,列表等)中的元素都是 true (或者为空)的话返回 True 。

文档:
_all = True
for item in iterable:
    if not item:
        _all = False
        break
if _all:
    # do stuff

更简洁:
if all(iterable):
    # do stuff




any(iterable)

如果可迭代的对象(数组,字符串,列表等)中任何一个元素为 true 的话返回 True 。

如果可迭代的对象为空则返回 False 。

文档:
_any = False
for item in iterable:
    if item:
        _any = True
        break
if _any:
    # do stuff

更简洁:
if any(iterable):
    # do stuff




cmp(x, y)

比较两个对象 x 和 y 。

x < y 的时候返回负数, x ==y 的时候返回 0, x > y 的时候返回正数。

文档:
def compare(x,y):
    if x < y:
        return -1
    elif x == y:
        return 0
    else:
        return 1

更简洁:
cmp(x,y)




dict([arg])

使用 arg 提供的条目生成一个新的字典。

arg 通常是未知的,但是它很方便。

比如说,如果我们想把一个含两个元组的列表转换成一个字典,我们可以这么做:
l = [('小甲鱼', 'Python'), ('FishC', 'Web开发'), ('鱼C', 'JavaScript')]
d = dict()
for tuple in l:
    d[tuple[0]] = tuple[1]

# {'小甲鱼': 'Python', '鱼C': 'JavaScript', 'FishC': 'Web开发'}

或者:
l = [('小甲鱼', 'Python'), ('FishC', 'Web开发'), ('鱼C', 'JavaScript')]
d = dict(l)

# {'小甲鱼': 'Python', '鱼C': 'JavaScript', 'FishC': 'Web开发'}




enumerate(iterable [,start=0])

对于一个可迭代的(iterable)/可遍历的对象(数组,字符串,列表等),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。

文档:
for i, item in enumerate(list):
    # so stuff with item, for example print it
    print i, item

如果对一个列表,既要遍历索引又要遍历元素时,可以这么写(一般写法):
list1 = ["我", "可能", "不是", "小甲鱼"]
for i in range (len(list1)):
    print (i ,list1[i])

用enumerate就很炫技:
list1 = ["我", "可能", "不是", "小甲鱼"]
for index, item in enumerate(list1):
    print (index, item)
Snip20181207_60.png





isinstance(object, classinfo)

如果 object 参数是 classinfo 参数的一个实例或者子类(直接或者间接)的话返回 True 。

当你想检验一个对象的类型的时候,第一个想到的应该是使用 type() 函数。

文档:
if type(obj) == type(dict):
    # do stuff
elif type(obj) == type(list):
    # do other stuff
...

更简洁:
if isinstance(obj, dict):
    # do stuff
elif isinstance(obj, list):
    # do other stuff
...




pow(x, y [,z])

返回 x 的 y 次幂(如果 z 存在的话则以 z 为模)。

如果你想计算 x 的 y 次方,以 z 为模,可以这么写:
mod = (x ** y) % z

但是当x=123213123,y=213213123,z=33的时候电脑得算个几分钟。

不要用 ** 和 % 了,使用 pow(x, y, z) ,就要见证奇迹了:
 pow(1234567, 4567676, 56) 

只用了 0.055 秒就出了结果!




zip([iterable, ])

这个函数返回一个含元组的列表,上代码:
l1 = ('小甲鱼', '《零基础入门学习Phython》')
l2 = ('小可爱', '《零基础入门学习Web开发》(HTML5 & CSS3)')
out = []
if len(l1) == len(l2):
    for i in range(len(l1)):
        out.append((l1[i], l2[i]))

# [('小甲鱼', '小可爱'), ('《零基础入门学习Phython》', '《零基础入门学习Web开发》(HTML5 & CSS3)')]

或者这么写:
l1 = ['小甲鱼', '《零基础入门学习Phython》']
l2 = ['小可爱', '《零基础入门学习Web开发》(HTML5 & CSS3)']
out = zip(l1, l2)

print(*out)
# [('小甲鱼', '小可爱'), ('《零基础入门学习Phython》', '《零基础入门学习Web开发》(HTML5 & CSS3)')]




吹水(彩蛋)

Python 内置函数很方便,它们很快并且经过了优化,所以它们可能效率更高。

本次只是简单列举了几个,有机会慢慢补充。

好吧,接下来就是“彩蛋时间”

在鱼C论坛上,有几位很牛x、很厉害、很热心的大神
ba21、塔利班、冬雪雪冬、新手ing、风介


giphy-1.gif


各位懂得,都是万中无一的高手

在小甲鱼老师的号召下,集结在一起,密谋一件很“hi”的事情:
Snip20181207_66.png


在Python板块,开启一个什么板块:
Snip20181208_67.png


学习Python必趟的坑?!听名字好厉害(接地气)?!

干嘛的呢?

用Py挖坑,搞发掘?

No!

362052fb0b04f2c1482a1063f3b41309ccdf4dfb.jpg
小甲鱼官方Bli:传送门


目标很简单:
将论坛上海量的提问资源,鱼油高频的Q&A,整理,优化,提纯


最终集结成一套:
游客,如果您要查看本帖隐藏内容请回复


计划正在稳步进行中,欢迎大家下方留言,畅所欲言




预知更多神文请看:


如果喜欢,别忘了评分


                               
登录/注册后可看大图


如此多懂学习的VIP至尊已订阅本专辑,你还不快点行动!(&#9758;订阅传送门 )

评分

参与人数 3荣誉 +15 鱼币 +15 贡献 +16 收起 理由
指头比思想慢 + 5 + 5 + 3
睦ちゃん她爹 + 3 鱼C有你更精彩^_^
alltolove + 10 + 10 + 10 无条件支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-8 13:08:21 | 显示全部楼层
乌拉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-8 13:41:40 | 显示全部楼层
后面站着的怎么那么像那个什么军师
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-8 15:17:54 | 显示全部楼层

回帖奖励 +3 鱼币

支持鱼C^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-11 15:08:43 | 显示全部楼层

回帖奖励 +3 鱼币

支持支持!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-11 15:38:01 | 显示全部楼层

回帖奖励 +3 鱼币

支持支持!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-11 16:34:07 | 显示全部楼层

回帖奖励 +3 鱼币

吓人,吓着小朋友了……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-11 18:09:05 | 显示全部楼层

回帖奖励 +3 鱼币

很强势
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-11 18:56:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-11 20:10:20 | 显示全部楼层

回帖奖励 +3 鱼币

学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-11 21:27:55 | 显示全部楼层

回帖奖励 +3 鱼币

哦也
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-11 23:31:12 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 08:20:56 | 显示全部楼层

回帖奖励 +3 鱼币

厉害呐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 09:23:52 | 显示全部楼层

回帖奖励 +3 鱼币

这是高手
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 09:30:36 | 显示全部楼层

回帖奖励 +3 鱼币

这是高手   高手
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 13:55:14 From FishC Mobile | 显示全部楼层

回帖奖励 +3 鱼币

支持支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-12 23:49:11 | 显示全部楼层

回帖奖励 +3 鱼币

顶一下~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 13:44:13 | 显示全部楼层

回帖奖励 +3 鱼币

不错,表示用的很少,收藏以便不时之需
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 17:38:23 | 显示全部楼层

回帖奖励 +3 鱼币

收藏以便不时之需
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-13 17:41:45 | 显示全部楼层

回帖奖励 +3 鱼币

enumerate()里面还可以加一个参数,修改索引的起始值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 21:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表