2012-09-27 1 views
6

私は、再発する文字列と行の中のどれをマークするかによって数値が設定されたリストを作成しようとしています。そこにいくつの文字列があるのか​​を示す数値は、int変数から得られます。変数に基づいて同じ文字列を何度も繰り返して番号が増えたPythonリストを作成します。

したがって、このような何か:

b = 5 
a = range(2, b + 1) 
c = [] 
c.append('Adi_' + str(a)) 

私は、これは、このようなリストを作成します期待していた。

代わり
c = ['Adi_2', 'Adi_3', 'Adi_4', 'Adi_5'] 

私はこの

c = ['Adi_[2, 3, 4, 5]'] 

ときのようなリストを取得します新しい行に印刷しようとしました

for x in c: 
    print"Welcome {0}".format(x) 

これの結果は次のとおりです。

Welcome Adi_[2, 3, 4, 5] 

私が望む結果は次のとおりです。

Welcome Adi_2 
Welcome Adi_3 
Welcome Adi_4 
Welcome Adi_5 

誰もが、私はそれを感謝のアイデアを持っている場合。

+0

あなたは既にフォーマットされた文字列を持っています。印刷行を "Welcome Adi_"に変更し、番号を直接文字列に書式設定する必要があります。あなたはリスト内の要素を変更することについて心配する必要はありません。 – kreativitea

答えて

11

あなたはほとんどそれを得た:

for i in a: 
    c.append('Adi_' + str(i)) 

あなたの最初の行は、文字列として全体リストaを変換されました。あなたはリスト内包といくつかのstring formattingでループを取り除くことができ

注:

c = ['Adi_%s' % s for s in a] 

または

c = ['Adi_{0}'.format(s) for s in a] #Python >= 2.6 
+0

これは私のためにそれをしました。今、私はリストを形作っていることを理解していますが、私はそのことを理解していません。私はgoogleのリストの置換に行くつもりだ:D。ありがとうございました。 – Adilicious

+1

@Adilicious http://docs.python.org/library/string.html#formatstringsとhttp://docs.python.org/library/stdtypes.html#string-formatting –

+0

を確認してください:) – Adilicious

0

やリストの内包表記のように:

b = 5 
a = range(2, b + 1) 
c = ["Adi_" + str(i) for i in a] 
1

使い方リスト内包:

行に
b = 5 
a = range(2, b + 1) 
c = ['Adi_'+str(i) for i in a] 
for x in c: 
    print"Welcome {0}".format(x) 
0

またはすべて:

>>> for s in ['Welcome Adi_%d' % i for i in range(2,6)]: 
...  print s 
... 
Welcome Adi_2 
Welcome Adi_3 
Welcome Adi_4 
Welcome Adi_5