0

私たちはこれを持っています:

lst = [('543', 'Tom', '- Jerry'), ('544', 'X-man - ', 'Hulk')]`
lst = [h+a for n,h,a in lst]
lst =[name.split(' - ') for name in lst]

まず、各タプルの結合[1]と要素を結合し、分割コードでそれらを分割しますが、それらを結合するためのリスト内包表記は機能しません。[2]-

最終的な出力は次のようになります。

[('534', 'Tom, 'Jerry'), ('544', 'X-man', 'Hulk')]

上記のコードでは、次のようになります。

[('Tom, 'Jerry'), ('X-man', 'Hulk')]

@編集

私は別の問題を抱えています:時々私のタプルにはこのような2つのアイテムしか含まれていません(2番目のタプル): 下からのリスト内包でそれを[('534', 'Tom, 'Jerry'), ('544', 'X-man - Hulk')] 取り除きたい-ので、この修正バージョンを思いつきました: lst = [tuple(i.split(' - ') if len(tup) == 2 else tuple(i.strip(' - ') for i in tup) for tup in lst]しかしinvalid syntax例外が発生します。

同様の問題について再度質問して申し訳ありませんが、リスト内包表記は私にとってまったく新しい概念ですが、上記が正しければプログラムを終了するので、今このトピックに関するドキュメント全体を勉強するのが待ちきれません。

4

1 に答える 1

3

たぶん私は間違っていますが、本当に空白と「-」を削除したいですか?

In [15]: lst = [('543', 'Tom', '- Jerry'), ('544', 'X-man - ', 'Hulk')]

In [16]: [tuple(i.strip(' -') for i in tup) for tup in lst]
Out[16]: [('543', 'Tom', 'Jerry'), ('544', 'X-man', 'Hulk')]
于 2013-03-10T09:21:25.263 に答える