どのように私はPythonでタプルのリストの上に()列挙しますか?

StackOverflow https://stackoverflow.com/questions/849369

  •  21-08-2019
  •  | 
  •  

質問

私はこのようないくつかのコードを持っています

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])
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top