2017-10-30 9 views
-2

リストの各要素の先頭に "<"文字を追加しようとしています。文字列リストの各要素の先頭に文字を追加する方法

def names(lista): 
    for i in range(len(lista)): 
     lista[i]+="<" 
    return lista 
+3

あなたは 'lista [i] = '<' + lista [i]'を意味しましたか? –

+2

@cairdcoinheringaahingただし、 '<'は各文字列の_end_にあります。現在は – roganjosh

+0

はいです。それはうまく動作しますが、 "<"は最後に行き、最初にあることを意図しています。 – doer76

答えて

0

にあなたのコードになります。リスタ自体がそれにすべての参照を意味し、変異してきたので、「リターン・リスタ」ステートメントは、不要であることを

def names(lista): 
    for index, item in enumerate(lista): 
     lista[index] = "<" + item 
    return lista 

注:あなたの代わりにリスタ内の項目を変更したいならば、あなたはenumerate機能を使用することができます変更が反映されます。

更新: 新しいリストを返す代わりに「リスタ」自体を変異して大丈夫なら、私は個人的にリスト内包をより読み見つけるものの、理解をリストアップする代わりに、ビルトインmap機能です。

def names(lista): 
    return list(map((lambda x: "<" + x), lista)) 
0

あなたの連結は間違った方法です。

lista[i] += "<"lista[i] = "<" + lista[i](コメントの示唆どおり)に置き換えてください。

def names(lista): 
    return ["<" + item for item in lista] 

しかし、それは代わりにリスタ自体に各項目を変更するので、新しいリストを返します:それはあなたがリストの内包表記を使用することができます

def names(lista): 
    for i in range(len(lista)): 
     lista[i] = "<" + lista[i] 
    return lista 
0

あなたはあなたが試すことができ

def names(lista): 
    return ['<{}'.format(elem) for elem in lista] 
0

を書き込むことができます。

def names(lista): 
    return list(map(lambda i: '<'+i, lista)) 

このようなテスト:

lista = ["a","b","c","d","e",] 
lista = names(lista) 
print(lista) 

はあなたにこれを与えます

['<a', '<b', '<c', '<d', '<e'] 
関連する問題