对,我在这里是一个完整的初学者,尝试通过各种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
就像我说这是非常简单的事情。我可以连接,我可以打印一个数组,但同时做两个??
任何人都可以根据我的知识填补这个空白吗?
由于
答案 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)))
您不应该将索引与值混淆。你的例子“有点工作”,因为你在数组中存储了数字(顺便说一句是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)
尝试在列表中存储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
最后一步是使用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的迭代器。