2012-11-11 20 views
15

Stack Exchangeでの検索で何らかの検索が行われましたが、探しているものが見つかりませんでした。リスト内のすべての項目に同じ文字列を先頭に追加

は、以下のリストを考える:

a = [1, 2, 3, 4] 

はどのようにして作成します。

a = ['hello1', 'hello2', 'hello3', 'hello4'] 

感謝を!

+1

あなたは周りの引用符を置くために、あなたの投稿を編集でした文字列? – Nicolas

+0

それについて残念 - まだ非常にPythonに新鮮な! –

答えて

32

list comprehensionを使用します。

['hello{0}'.format(i) for i in a] 

リストの内包を使用すると、シーケンスの各要素に式を適用することができます。

デモ:

>>> a = [1,2,3,4] 
>>> ['hello{0}'.format(i) for i in a] 
['hello1', 'hello2', 'hello3', 'hello4'] 
+0

ああ甘い!どうもありがとうございます。私はこの種のことを行うためにPythonに便利な構文があると確信していました。離れてリストの理解の詳細を読む。 –

1

list comprehensionを使用します。

In [1]: a = [1,2,3,4] 

In [2]: ["hello" + str(x) for x in a] 
Out[2]: ['hello1', 'hello2', 'hello3', 'hello4'] 
+0

これは、最初の答えよりも多かれ少なかれ平易な方法ですか?私はそれを少し読むのが簡単だと思う。これは基本的にフードのフォーマット方法と同じですか? –

+2

はPythonであると言うことはできませんが、まず 'int'を' string'に変換する必要があります。これは 'format()'で簡単に処理できるので、 'format()'の答えになります。 –

+0

ありがとう@AshwiniChaudhary。非常に役立ちます。 –

7

もう一つのオプションはbuilt-in map functionを使用することです:WolframHコメントどおり

a = range(10) 
map(lambda x: 'hello%i' % x, a) 

編集:

map('hello{0}'.format, a) 
+0

ありがとうございます。男、私は学ぶほどのことがあります。 –

+0

あなたは大歓迎です –

+3

特に 'lambda'がまだ分からない場合は' map( 'hello {0}'。format、a) 'を使用してください。注意:Python 3.xで 'map'は' list'を返しません(ただし、 'list()'を使って 'list'に変換できるもう一つの反復可能なオブジェクトです)。 – WolframH

関連する問題