36

Python 3 では、タプルRowとリストがありますA

Row = namedtuple('Row', ['first', 'second', 'third'])
A = ['1', '2', '3']

Rowlist を使用して初期化するにはどうすればよいAですか? 私の状況では、これを直接行うことはできないことに注意してください。

newRow = Row('1', '2', '3')

私はさまざまな方法を試しました

1. newRow = Row(Row(x) for x in A)
2. newRow = Row() + data             # don't know if it is correct
4

2 に答える 2

73

Row(*A)引数のアンパックを使用してこれを行うことができます。

>>> from collections import namedtuple
>>> Row = namedtuple('Row', ['first', 'second', 'third'])
>>> A = ['1', '2', '3']
>>> Row(*A)
Row(first='1', second='2', third='3')

アンダースコアで始まるメソッドの使用についてリンターがあまり文句を言わない場合は、 classmethod 代替コンストラクターnamedtupleを提供することに注意してください。_make

>>> Row._make([1, 2, 3])

アンダースコア プレフィックスに惑わされないでください。これ、このクラスの文書化された API の一部であり、すべての python 実装などに含まれていると信頼できます。

于 2013-03-10T16:27:15.990 に答える
1

namedtuple サブクラスには、'_make' という名前のメソッドがあります。名前付きタプル オブジェクトに配列 (Python リスト) を挿入するには、メソッド '_make' を使用すると簡単です。

>>> from collections import namedtuple
>>> Row = namedtuple('Row', ['first', 'second', 'third'])
>>> A = ['1', '2', '3']
>>> Row._make(A)
Row(first='1', second='2', third='3')

>>> c = Row._make(A)
>>> c.first
'1'
于 2014-01-20T02:15:20.503 に答える