8

我正在尝试创建一个列表,该列表由重复出现的字符串和一个标记它是哪一个的数字填充。标记有多少字符串的数字是从一个 int 变量中获得的。

所以是这样的:

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

如果有人有想法,我将不胜感激。

4

4 回答 4

12

你几乎明白了:

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

您的第一行是将整个列表转换a为字符串。

请注意,您可以使用列表理解和一些字符串格式来摆脱循环:

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

或者

c = ['Adi_{0}'.format(s) for s in a] #Python >= 2.6
于 2012-09-27T12:07:40.483 回答
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)
于 2012-09-27T12:13:14.833 回答
0

或作为列表理解:

b = 5
a = range(2, b + 1)
c = ["Adi_" + str(i) for i in a]
于 2012-09-27T12:12:30.600 回答
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
于 2012-09-27T12:19:23.397 回答