从数组连接文本字符串和int

时间:2012-01-13 12:11:37

标签: python

对,我在这里是一个完整的初学者,尝试通过各种python教程,其中很多很棒。然而,他们中没有一个有很多统一的学习方法,其中一种技能建立在另一种技能之上。他们似乎都在向筒仓展示事物。我要做的就是将一个字符串与一个保存在数组中的整数连接起来。这是代码:

text = 'product_price_'
numberArray = [1,2,3,4,5,6,7,8,9,10]


for i in numberArray:
  print text + str(numberArray[i])

这种作品给我结果:

product_price_2
product_price_3
product_price_4
product_price_5
product_price_6
product_price_7
product_price_8
product_price_9
product_price_10
Traceback (most recent call last):
  File "/Users/me/Documents/Programming/python/eclipse/workspace/concat.py", line 8, in <module>
print text + str(numberArray[i])
IndexError: list index out of range

就像我说这是非常简单的事情。我可以连接,我可以打印一个数组,但同时做两个??

任何人都可以根据我的知识填补这个空白吗?

由于

6 个答案:

答案 0 :(得分:6)

i包含数组中的值,而不是索引。因此,如果要连接值,请尝试以下方法:

for i in numberArray:
  print text + str(i)

答案 1 :(得分:2)

长话短说:

text = 'product_price'
numberArray = [1,2,3,4,5,6,7,8,9,10]

for num in numberArray:
    print '_'.join((text, str(num)))

长篇故事:

- 第1步

您不应该将索引与值混淆。你的例子“有点工作”,因为你在数组中存储了数字(顺便说一句是list),但由于索引编号以0开头,你跳过了第一个元素并找到了list index out of range在最后一个之后。

这是针对您的示例的修复

text = 'product_price_'
numberArray = [1,2,3,4,5,6,7,8,9,10]

for i in numberArray:
    print text + str(i)

- 第2步

尝试在列表中存储string,可能会更清楚:

>>> text = 'product_price '
>>> my_list = ['one', 'two', 'three']
>>> for price in my_list:
...     print text + price
product_price one
product_price two
product_price three

在python中,没有必要从索引中获取值,因此不应该

>>> text = 'product_price '
>>> my_list = ['one', 'two', 'three']
>>> for i in range(len(my_list)):
...     print text + my_list[i]
product_price one
product_price two
product_price three

- 第3步

最后一步是使用str.join()连接字符串,在大多数情况下,这将更有效:

>>> text = 'product_price'   # without the underscore at the end
>>> numberArray = [1,2,3,4,5,6,7,8,9,10]
>>> for num in numberArray:
...     print '_'.join((text, str(num)))
product_price_1
product_price_2
product_price_3
[...]

答案 2 :(得分:1)

您可能需要此代码

for i in range(len(numberArray)):
    print text + str( numberArray[i] )

答案 3 :(得分:0)

您可以使用列表理解:

[text + str(i) for i in numberArray]

甚至更短:

[text + str(i) for i in range(11)]

去掉数字列表(它是一个列表,而不是一个数组)。

另一种方法是使用map

map(lambda i: b + str(i), a)

答案 4 :(得分:0)

也许你想要的是

for i in numberArray:

    print text + str(i)

使用'in'运算符时,数组元素循环而不是索引。 数组索引从0开始,而不是1。 例如

numberArray[0] = 1

numberArray[1] = 2

numberArray[9] = 10

如果您坚持在此示例中使用索引, 您的数组应更改为

numberArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

答案 5 :(得分:0)

你想循环使用numberArray的<:p>

for i in xrange(len(numberArray)):
    print text + str(numberArray[i])

然后我取值0到9,你的list-index不会超出范围。

函数xrange为你提供了一个范围为0,...,len(numberArray)的迭代器 - 1.由于numberArray的长度是10,你有一个从0到9的迭代器。