リストには次の要素があり、リストの長さは100要素です。
[(50, (2.7387451803816479e-13, 219))]
各要素を次のように変換するにはどうすればよいですか?
[(50, 2.7387451803816479e-13, 219)]
[(a, b, c) for a, (b, c) in l]
タプルのパッキングとアンパッキング 問題を解決します。
Python 3.5で、追加のタプルアンパックが導入されました PEP 448 で、タプルリテラルでスター付きの式を使用できるようになりました。
>>> l = [(50, (2.7387451803816479e-13, 219)), (40, (3.4587451803816479e-13, 220))]
>>> [(a, *rest) for a, rest in l]
[(50, 2.738745180381648e-13, 219), (40, 3.458745180381648e-13, 220)]
これは、フラット化する多くの要素を含む記録管理にネストされたタプルを使用している場合に役立ちます。
次の関数を使用して、リスト内のすべての要素にループで適用できます。
import type
def flatten(T):
if type(T) != types.TupleType: return (T,)
Elif len(T) == 0: return ()
else: return flatten(T[0]) + flatten(T[1:])
使い方:
このソリューションの良いところは次のとおりです。
コードは、次のソースからわずかに適合されています。
https://mail.python.org/pipermail/tutor/2001-April/005025.html
それが誰かを助けることを願っています:)
Python 2.7互換性のある方法でMitchがPython 3.5。
>>> example = [(50, (2.7387451803816479e-13, 219)),
(100, (3.7387451803816479e-13, 218))]
>>> [(lambda *x: x)(k, *r) for k, r in example]
[(50, 2.738745180381648e-13, 219), (100, 3.7387451803816477e-13, 218)]
この方法の利点は、受け入れられた回答のようにフラット化するために、内部タプルの各値の変数名を見つける必要がないことです。 2つまたは3つの項目がある場合、それは実際には問題ではありませんが、10分の1以上の値があると想像してください...
この方法で結果を得ることができます
>> example = [(50, (2.7387451803816479e-13, 219))]
>>> [Tuple(x[:1]) + (x[1]) for x in example]
[(50, 2.738745180381648e-13, 219)]