どのように私はPythonでタプルのリストの上に()列挙しますか?
質問
私はこのようないくつかのコードを持っています
letters = [('a', 'A'), ('b', 'B')]
i = 0
for (lowercase, uppercase) in letters:
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
i += 1
私は私のために「i」の変数の世話をすることができます列挙()関数がありますことを言われてきます:
for i, l in enumerate(['a', 'b', 'c']):
print "%d: %s" % (i, l)
しかし、私は2つを結合する方法を見つけ出すことはできません。問題のリストはタプルで構成されている場合はどのように列挙使うのですか?私はこれを実行する必要がありますか?
letters = [('a', 'A'), ('b', 'B')]
for i, tuple in enumerate(letters):
(lowercase, uppercase) = tuple
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
以上のエレガントな方法はありますか?
解決
これはそれを行うにはきちんとした方法は、次のとおりです。
letters = [('a', 'A'), ('b', 'B')]
for i, (lowercase, uppercase) in enumerate(letters):
print "Letter #%d is %s/%s" % (i, lowercase, uppercase)
他のヒント
これは、私はそれを行うだろう方法です。
import itertools
letters = [('a', 'A'), ('b', 'B')]
for i, lower, upper in zip(itertools.count(),*zip(*letters)):
print "Letter #%d is %s/%s" % (i, lower, upper)
EDIT:アンパックが冗長になります。これはあなたのユースケースに応じて、仕事をしたりしないことがありますよりコンパクトな方法です。
import itertools
letters = [('a', 'A'), ('b', 'B')]
for i in zip(itertools.count(),*zip(*letters)):
print "Letter #%d is %s/%s" % i
あなたもこの方法を行うことができます:
letters = [('a', 'A'), ('b', 'B')]
for i, letter in enumerate(letters):
print "Letter #%d is %s/%s" % (i, letter[0], letter[1])
所属していません StackOverflow