1

タプルのリストのすべての最初の要素の順次リストと、すべての 2 番目の要素の別の順次リストが必要です。

sset = [('foo',1),('bar',3),('zzz',9)]
x = ['foo','bar','zzz']
y = [1,3,9]

私はこのようにしています:

x = [i for i,j in sset]
y = [j for i,j in sset]

もっと簡単な方法はありますか?

dict.keys()andを使用できますdict.values()が、リストの順序は維持されますか? また、タプルに 2 つ以上の要素がある場合、このdictトリックは機能しません。

x,y = dict(sset).keys(), dict(sset).values()
4

1 に答える 1

6

を使用して、splat 任意の引数構文を使用してzip()適用できます。sset*args

x, y = zip(*sset)

デモ:

>>> sset = [('foo',1),('bar',3),('zzz',9)]
>>> x, y = zip(*sset)
>>> x
('foo', 'bar', 'zzz')
>>> y
(1, 3, 9)

これにより、リストではなくタプルが作成されます。zip()必要に応じて、出力をリストにマップできます。

x, y = map(list, zip(*sset))
于 2013-09-09T10:33:36.790 に答える