2016-10-15 10 views
1

リストの最初の項目を印刷しようとしています。リストの最初の項目を印刷する

['32 2 6 6', '31 31 31 6', '31 2 6 6'] 

私のコードは次のとおりです:

from operator import itemgetter 

contents = [] 
first_item = list(map(itemgetter(0), contents)) 
print first_item 

しかしitemgetterのみを返します。 [ '3'、 '3'、 '

私のリストは、このようなものです:これは私が持っているものです3 '] istead of [' 32 '、' 31 '、' 31 '] デリミタを使用できますか?

+0

あなたは 'str.split(」「)を行う必要があります[0]'文字列 – ahitt6345

+1

の最初の番号を取得するために、それは次のようになり、最初の項目(ではありません最初の数字ですが、最初の数字は '[item.split()[0] in item in 0 ') –

+0

あなたの前の質問に関連して、これはファイルを読むときにすべて実行できます。あなたが持っている問題を解決する非常にラウンドアバウトな方法です。 –

答えて

5

文字列のリストを扱っているので、各文字列の最初のインデックスを取得しています。実際には、すべての文字列について3です。何をすべきことは、あなたが(分割のデフォルトはある)空間上の各文字列を分割理解し、最初のインデックスを取得です:理解インサイド

first_element = [s.split(None, 1)[0] for s in contents] 

を、各s.split(None, 1)の結果は、実際に=>

になります

['32', '2 6 6']['31', '31 31 6']['31', '2 6 6']

、あなたはそれの最初のインデックスを取得します。

出力:

['32', '31', '31'] 
+0

最初のものだけが必要なら 's.split(None、1)'を実行します。 –

+1

@PadraicCunningham私はそれを決して考えなかった!ありがとう。私はそれを更新します。 – idjaw

+1

ラムダなしで本当に機能したい場合は、リスト(map(itemgetter(0)、map(methodcaller( "split"、None、1)、contents)) ')) –

0
>>> items = ['32 2 6 6', '31 31 31 6', '31 2 6 6'] 
>>> [s.partition(' ')[0] for s in items] 
['32', '31', '31'] 
関連する問題