|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有言在先,先学习,后吹水,彩蛋在最后哈。
分享几个很牛x的Python内置函数,每个学习Python的鱼油都应该了解并上手体验下。
对于每个函数,本人会使用一个通俗易懂的实现来和内置函数做对比。
有的直接引用了内置函数的文档,请理解,因为这些函数文档写的非常奈斯了,没必要重复造轮子。
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
复制代码
更简洁:
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)
复制代码
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 为模,可以这么写:
但是当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、很厉害、很热心的大神:
各位懂得,都是万中无一的高手!
在小甲鱼老师的号召下,集结在一起,密谋一件很“hi”的事情:
在Python板块,开启一个什么板块:
学习Python必趟的坑?!听名字好厉害(接地气)?!
干嘛的呢?
用Py挖坑,搞发掘?
No!
目标很简单:
将论坛上海量的提问资源,鱼油高频的Q&A,整理,优化,提纯
最终集结成一套:
计划正在稳步进行中,欢迎大家下方留言,畅所欲言
预知更多神文请看:
如果喜欢,别忘了评分 :
如此多懂学习的 VIP至尊都 已订阅本专辑,你还不快点行动!( ☞订阅传送门 )
|
评分
-
查看全部评分
|