非常に牛フォークのpython内蔵関数
5748 ワード
これらのPython関数はまるでキックアスだ.
Python女神
この文章では、Python内蔵関数をいくつか見てみましょう.これらの関数はまるでキックアスが爆発したので、Pythonerごとにこれらの関数を知っているべきだと思います.
各関数について、内蔵関数と比較するために一般的な実装を使用します.
内蔵関数のドキュメントを直接参照した場合は、これらの関数ドキュメントが素晴らしいので理解してください.
all(iterable)
反復可能なオブジェクト(配列、文字列、リストなど、以下同じ)の要素がtrue(または空)である場合はTrueを返します.
もっと簡単な書き方は:
any(iterable)
反復可能なオブジェクトのいずれかの要素がtrueの場合はTrueを返します.反復可能なオブジェクトが空の場合はFalseを返します.
もっと簡単な書き方は:
cmp(x, y)
2つのオブジェクトxとyを比較します.xyの場合は正数を返します.
代わりにcmp(x,y)を使うことができます.
dict([arg])
argで提供されたエントリを使用して、新しい辞書を生成します.
argは通常未知ですが、便利です!たとえば、2つのメタグループを含むリストを辞書に変換したい場合は、このようにすることができます.
または、
enumerate(iterable [,start=0])
私は本当にこれが大好きです!以前C言語を書いたことがあるなら、こう書くかもしれません.
ああ、そんなに面倒なことはしないでください.enumerate()を使用して可読性を高めることができます.
isinstance(object, classinfo)
objectパラメータがclassinfoパラメータのインスタンスまたはサブクラス(直接または間接)である場合はTrueを返します.
オブジェクトのタイプを検証したい場合は、type()関数を使用することを最初に考えます.
あるいは、次のように書くことができます.
pow(x, y [,z])
xのy乗を返します(zが存在する場合はzをモードにします).
xのy次方程式を計算し、zをモデルにしたい場合は、次のように書くことができます.
しかし、x=1234567、y=4567676、z=56のとき、私のパソコンは64秒も走っていました.
**と%は使わないでpow(x,y,z)を使いましょう!この例はpow(1234567,4567676,56)と書くことができ、0.034秒で結果が出た!
zip([iterable, ])
この関数はメタグループを含むリストを返します.具体的には例を参照してください.
あるいはこう書きます.
逆順にしたいなら*オペレータを加えればいいです.
結論
Python内蔵関数は便利で、すぐに最適化されているので、効率が高い可能性があります.
各Python開発者は、内蔵関数のドキュメント(引用部分)をよく見るべきだと思います.
言うのを忘れましたが、itertoolsモジュールにはいい関数がたくさんあります.もう一度言って、それらは確かにキックアスが爆発した.
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を比較します.x
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モジュールにはいい関数がたくさんあります.もう一度言って、それらは確かにキックアスが爆発した.