2017-05-04 21 views
1

これが可能かどうか、これまでのところ私はそれを行う方法が見つけられていません。私は名前を含むリストのリストを持っています。リストには2つの要素があり、その他には3つの要素があります。[['Doe', 'John'], ['Doe', 'Jr.,', 'John']]リストをリストの中に組み込む方法はありますか?私は単一のリストでそれを行うことができますが、私はリストのリストでそれを試してみると、TypeError: sequence item 0: expected str instance, list foundというエラーが出ます。私はこのようなことをしようとしていた:リストの中にインデックスを組み合わせる方法はありますか

while(len(name_list) > 2: 
    indices = [0, 1] 
    name_list = ['Doe', 'Jr.,', 'John'] 

    join_index = ' '.join([e for i, e in enumerate(name_list) if i in indices]) 
    print(join_index) 
+0

*「リストのリスト内でインデックスを結合する方法はありますか?」* - それよりも明確な問題文を提示する必要があります。 –

+1

私が理解していることから、あなたがしていることには2つの可能性があります。最初に、サブリストを文字列にまとめようとしているかもしれません: '['Doe John'、 'Doe Jr. John']'。もう一つの可能​​性は 'superlist [0] [3]'にアクセスすることで 'ValueError'が得られないように有効な文字列を返すようにすることです。あなたの意図した結果がどのように見えるかを明確にし、おそらくあなたがこれを行う必要がある理由を説明してください。 – Aaron3468

+0

私はすべてをcsvファイルに入れています。ロード時に、余分なインデックスのために名前の一部が間違った列にある – tin

答えて

0

ここでは、最終的な答えであります

length = (len(names)) 

j=0 
while j < length: 

    if len(names[j]) > 3: 
     names[j][0] = ''.join((names[j][0], ' ', names[j][1])) 
     del(names[j][1]) 
     #print(names[j]) 
     j += 1 
    else: 
     #print('3 or less') 
     j += 1 
1

名前を組み合わせてより複雑なものから(最後に、最初に)作成しようとしているようだ。

このコードは、すべてが、サブリストの最後の要素結合します:

コード:

names = [['Doe', 'John'], ['Doe', 'Jr.,', 'John']] 
print(names) 

new_list = [[' '.join(n[:-1]), n[-1]] for n in names] 
print(new_list) 

を結果:

[['Doe', 'John'], ['Doe', 'Jr.,', 'John']] 

[['Doe', 'John'], ['Doe Jr.,', 'John']] 
関連する問題