くだらない質問で申し訳ありませんが、誰か次の意味を教えてください。
for ctype, (codename, name) in searched_perms:
括弧内に何が起こっているのかわかりません。for ctype in serached_perms:
理にかなっています。
答えはPythonのドキュメントのどこかにあると思いますが、何を探しているのかわからないため、説明を見つけるのは困難です。
くだらない質問で申し訳ありませんが、誰か次の意味を教えてください。
for ctype, (codename, name) in searched_perms:
括弧内に何が起こっているのかわかりません。for ctype in serached_perms:
理にかなっています。
答えはPythonのドキュメントのどこかにあると思いますが、何を探しているのかわからないため、説明を見つけるのは困難です。
これは実質的に
for x in search_perms:
ctype, y = x
codename, name = y
また
for x in search_perms:
ctype = x[0]
codename = x[1][0]
name = x[1][1]
つまり、search_perms
アイテムをペアとしてアンパックし、各ペアの 2 番目のアイテムもペアとしてアンパックします。
例:
>>> d = {"ham": "yes", "spam": "no", "eggs": "please"}
>>> for k, v in d.iteritems():
... print("%s? %s" % (k, v))
...
eggs? please
ham? yes
spam? no
>>> for i, (k, v) in enumerate(d.iteritems()):
... print("question %d: %s? %s" % (i, k, v))
...
question 0: eggs? please
question 1: ham? yes
question 2: spam? no
これenumerate(d.iteritems())
は、各 2 番目の要素が再びペアになるペアを生成するため機能します。
>>> list(enumerate(d.iteritems()))
[(0, ('eggs', 'please')), (1, ('ham', 'yes')), (2, ('spam', 'no'))]
ctype, (codename, name)
と同じです(ctype, (codename, name))
。したがって、searched_perms
は (a,(b,c)) の形式の一連のものである必要があり、ループの反復ごとに、変数ctype
、codename
、name
が a、b、c に設定されます。
リストsearchedparams
は次のようになります。
In [1]: L = []
In [2]: L.append(('a', ('b', 'c')))
In [3]: L.append(('d', ('e', 'f')))
In [4]: L
Out[4]: [('a', ('b', 'c')), ('d', ('e', 'f'))]
In [6]: for ctype, (codename, name) in L:
print ctype, codename, name
...:
a b c
d e f
('a', ('b', 'c'))
は 2 つの値のタプルで、右の値も 2 つの値のタプルです。
これは、searched_perms
が反復中に 2 つの要素を返す iterable であることを意味しctype
ます(codename, name)
。したがって、searched_perms
次のようになります。
[[ctype1, (code1, name1)], [ctype2, (code2, name2)], ...]
この構文により、要素for ctype, (codename, name) in searched_perms
ごとに のすべてのコンテンツを抽出できます。searched_perms