非常に牛フォークのpython内蔵関数

5748 ワード

これらのPython関数はまるでキックアスだ.
Python女神
この文章では、Python内蔵関数をいくつか見てみましょう.これらの関数はまるでキックアスが爆発したので、Pythonerごとにこれらの関数を知っているべきだと思います.
各関数について、内蔵関数と比較するために一般的な実装を使用します.
内蔵関数のドキュメントを直接参照した場合は、これらの関数ドキュメントが素晴らしいので理解してください.
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)
2つのオブジェクトxとyを比較します.xyの場合は正数を返します.
def compare(x,y):
   if x < y:
       return -1
   elif x == y:
       return 0
   else:
       return 1

代わりにcmp(x,y)を使うことができます.
dict([arg])
argで提供されたエントリを使用して、新しい辞書を生成します.
argは通常未知ですが、便利です!たとえば、2つのメタグループを含むリストを辞書に変換したい場合は、このようにすることができます.
l = [('Knights', 'Ni'), ('Monty', 'Python'), ('SPAM', 'SPAAAM')]
d = dict()
for tuple in l:
   d[tuple[0]] = tuple[1]
# {'Knights': 'Ni', 'Monty': 'Python', 'SPAM': 'SPAAAM'}

または、
l = [('Knights', 'Ni'), ('Monty', 'Python'), ('SPAM', 'SPAAAM')]
d = dict(l) # {'Knights': 'Ni', 'Monty': 'Python', 'SPAM': 'SPAAAM'}

enumerate(iterable [,start=0])
私は本当にこれが大好きです!以前C言語を書いたことがあるなら、こう書くかもしれません.
for i in range(len(list)):
   # do stuff with list[i], for example, print it
   print i, list[i]

ああ、そんなに面倒なことはしないでください.enumerate()を使用して可読性を高めることができます.
for i, item in enumerate(list):
   # so stuff with item, for example print it
   print i, 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をモデルにしたい場合は、次のように書くことができます.
mod = (x ** y) % z

しかし、x=1234567、y=4567676、z=56のとき、私のパソコンは64秒も走っていました.
**と%は使わないでpow(x,y,z)を使いましょう!この例はpow(1234567,4567676,56)と書くことができ、0.034秒で結果が出た!
zip([iterable, ])
この関数はメタグループを含むリストを返します.具体的には例を参照してください.
l1 = ('You gotta', 'the')
l2 = ('love', 'built-in')
out = []
if len(l1) == len(l2):
   for i in range(len(l1)):
       out.append((l1[i], l2[i]))
# out = [('You gotta', 'love'), ('the', 'built-in)]

あるいはこう書きます.
l1 = ['You gotta', 'the']
l2 = ['love', 'built-in']
out = zip(l1, l2) # [('You gotta', 'love'), ('the', 'built-in)]

逆順にしたいなら*オペレータを加えればいいです.
print zip(*out)
# [('You gotta', 'the'), ('love', 'built-in')]

結論
Python内蔵関数は便利で、すぐに最適化されているので、効率が高い可能性があります.
各Python開発者は、内蔵関数のドキュメント(引用部分)をよく見るべきだと思います.
言うのを忘れましたが、itertoolsモジュールにはいい関数がたくさんあります.もう一度言って、それらは確かにキックアスが爆発した.