2016-04-12 4 views
2

私はリスト、例を持っています値:終了)これまでPython:リストをループしていますか?</p> <pre><code>mylist=["a", "b", "end"] </code></pre> <p>は、私は別のリスト(new_list)にマイリストのすべての値を追加しても(最後のものを除いてnew_listの各値に文字列「手紙」を追加します:

I持っているすべての値に文字列 "手紙" を追加forループ:

new_list = [] 

for x in my_list: 
    new_list.append(x + " letter") 

生成:

( "文字"、 "Bの手紙"、 "最後の手紙")

私が欲しい:

( "文字"、 "Bの手紙"、 "終了")

+0

なぜリストに ''end''が含まれていますか?リストを終了させるだけで、間違いなくはるかに明確になるでしょう。 – jpmc26

答えて

5

これは最高のリストの内包とスライスで達成されます最後のものを除いて、最後のものを追加してください。

new_list = [x + " letter" for x in my_list[:-1]] + [my_list[-1]] 
+0

ええと、これらのすべての一時的なリストは一時的な文字列を避けています - 'i [len(mylist)-1 else else s for i、s enumerate(mylist)]'でも同様に醜いです。 – AChampion

2

最後の要素をスキップして、リストスライスを使用する必要があります。リストの理解を使用することも便利です。これを試してみてください:

mylist = ['a', 'b', 'end'] 
new_list = [x + ' letter' for x in mylist[:-1]] + [mylist[-1]] 

をそれが期待通りに動作します:

>>> new_list = [s + ' letter' for s in mylist[:-1]] + mylist[-1:] 
>>> new_list 
['a letter', 'b letter', 'end'] 
1

あなたがであなたの要素のそれぞれに" letter"を追加することができます。

new_list 
=> ['a letter', 'b letter', 'end'] 
関連する問題