私はタプルのリストを持っている場合、私はどのように私はタプルを解凍し、1つのリストに、どのように1つのリストにタプルのリストを参加させる?
b = [1,3,5,4]
を再フォーマットすることができ例えば
a = [(1,3),(5,4)]
、私の前の質問How to group list items into tuple?
に続いてこれがまたiter
機能と関係していると思うが、私は本当にこれを行う方法を知らない。私を教えてください。
私はタプルのリストを持っている場合、私はどのように私はタプルを解凍し、1つのリストに、どのように1つのリストにタプルのリストを参加させる?
b = [1,3,5,4]
を再フォーマットすることができ例えば
a = [(1,3),(5,4)]
、私の前の質問How to group list items into tuple?
に続いてこれがまたiter
機能と関係していると思うが、私は本当にこれを行う方法を知らない。私を教えてください。
import itertools
b = [i for i in itertools.chain(*[(1,3),(5,4)])]
ただ、リストAを反復し、タプルを解凍:
l = []
for x,y in a:
l.append(x)
l.append(y)
In [11]: list(itertools.chain(*a))
Out[11]: [1, 3, 5, 4]
あなただけ1, 3, 5, 4
を反復処理する必要がある場合は、あなたがlist()
コールを取り除くことができます。
'itertools.chain.from_iterable'のポイントは何ですか? – Volatility
@Volatility:レイジー評価? – NPE
Hmm、true true – Volatility
別の方法:
a = [(1,3),(5,4)]
b = []
for i in a:
for j in i:
b.append(j)
print b
これは、リスト内のタプルを処理します(a)のカントー。緩い変数でも解析したい場合は、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
型チェックの代わりに 'isinstance(i、collections.Iterable)'を使います( 'collections'は既にインポートされていると仮定します) – Volatility
、かなり正確な複製... – danodonovan