import pprint
LL= [ ('A123', 'A120', '2011-03'),
('A133', 'A123', '2011-03'),
('D123', 'D120', '2011-04'),
('D140', 'D123', '2011-04'),]
LL = [row+(i,) for i,row in enumerate(LL,1)]
pprint.pprint(LL)
利回り
[('A123', 'A120', '2011-03', 1),
('A133', 'A123', '2011-03', 2),
('D123', 'D120', '2011-04', 3),
('D140', 'D123', '2011-04', 4)]
ここでは説明のビットです:
我々はこのように定義されたLL
で始まる:
In [28]: LL
Out[28]:
[('A123', 'A120', '2011-03'),
('A133', 'A123', '2011-03'),
('D123', 'D120', '2011-04'),
('D140', 'D123', '2011-04')]
最初のトリックを使用することですenumerate :「ランク」は、0からカウントを開始することを除いて、あなたが望むものに近く、行の前ではなく、最後に置かれ
In [30]: list(enumerate(LL))
Out[30]:
[(0, ('A123', 'A120', '2011-03')),
(1, ('A133', 'A123', '2011-03')),
(2, ('D123', 'D120', '2011-04')),
(3, ('D140', 'D123', '2011-04'))]
。私たちは、enumerate(LL,1)
を使用して、1とカウントを開始しenumerate
を伝えることができ、私たちはlist comprehensionを使用して行の末尾にランクを配置することができます:
リスト内包で
In [31]: [row+(i,) for i,row in enumerate(LL,1)]
Out[31]:
[('A123', 'A120', '2011-03', 1),
('A133', 'A123', '2011-03', 2),
('D123', 'D120', '2011-04', 3),
('D140', 'D123', '2011-04', 4)]
、row
が('A123', 'A120', '2011-03')
のようなタプルで、 とrow+(i,)
はタプルの合計である:
In [32]: ('A123', 'A120', '2011-03')+(1,)
Out[32]: ('A123', 'A120', '2011-03', 1)
これは、リスト内包の各列が構成されている方法です。
これで何かが邪魔になりました。 LL = pprint.pprint([行+(i、)i、列挙列(LL、1)])を使用します。 LLの処理を続行する。そして、エラーを得る。 LLはリストタイプにとどまる必要があります。 – Merlin
@ user428862: 'LL'を再定義するには、' LL = [行+(i、)i、行を列挙する(LL、1)] 'を使用します。 – unutbu
さて、完了! T、あなたは何をしたのか説明できますか? – Merlin