28

前の質問に続いて、リスト項目をタプルにグループ化する方法は?

たとえば、タプルのリストがある場合

a = [(1,3),(5,4)]

タプルをアンパックして 1 つのリストに再フォーマットするにはどうすればよいですか

b = [1,3,5,4]

これもiter機能に関係していると思いますが、どうすればいいのかわかりません。教えてください。

4

5 に答える 5

59
b = [i for sub in a for i in sub]

それはトリックを行います。

于 2013-03-07T10:51:18.477 に答える
14
In [11]: list(itertools.chain(*a))
Out[11]: [1, 3, 5, 4]

繰り返す必要がある場合は、呼び出し1, 3, 5, 4を取り除くことができます。list()

于 2013-03-07T10:53:47.903 に答える
3

リスト a を繰り返し処理し、タプルを展開します。

l = []
for x,y in a:
   l.append(x)
   l.append(y)
于 2013-03-07T10:53:26.483 に答える
2

別の方法:

a = [(1,3),(5,4)]
b = []

for i in a:
    for j in i:
        b.append(j)

print b

これは、リスト(a)tho内のタプルのみを処理します。次のような緩い変数も解析する場合は、if-elseステートメントを追加する必要があります。

a = [(1,3),(5,4), 23, [21, 22], {'somevalue'}]
b = []

for i in a:
    if type(i) == (tuple) or type(i) == (list) or type(i) == (set):
        for j in i:
            b.append(j)
    else:
        b.append(i)

print b
于 2013-03-07T10:54:24.937 に答える
1
import itertools
b = [i for i in itertools.chain(*[(1,3),(5,4)])]
于 2013-03-07T10:51:57.653 に答える