在字符串开头添加数字

时间:2018-08-02 21:07:34

标签: python arrays loops split io

我试图从一行中读取字符串,并在每个字符串的开头添加一个数字,然后将每个数字添加到数组中,但是我的代码在该字符串的每个字符中都添加了一个数字。

infile = open("milkin.txt","r").readlines()
outfile = open("milkout.txt","w")

number = infile[0]
arrayLoc = infile[1].split( )
array = infile[2].split( )

for i in infile[2]:
    counter = 1
    countered = str(counter)
    i = countered + i
    array.append(i)

output:
['2234567', '3222222', '4333333', '5444444', '6555555', '11', '12', '13', '14', '15', '16', '17', '1 ', '12' .... etc

intended output:
['12234567', '23222222', '34333333', '45444444', '56555555']

infile:
5
1 3 4 5 2
2234567 3222222 4333333 5444444 6555555

1 个答案:

答案 0 :(得分:1)

您需要遍历从文件中读取的array,并且由于您似乎想向每个元素添加序号,因此可以使用enumerate(array)来获取每个元素的索引循环播放元素。您可以在enumerate上添加一个参数,以告诉它以什么数字开头(默认为0):

new_arr = []
for i, a in enumerate(array, 1):
    # 'i' will go from 1, 2, ... (n + 1) where 'n' is number of elements in 'array'
    # 'a' will be the ith element of 'array'
    new_arr.append(str(i) + a)
print(new_arr)

['12234567', '23222222', '34333333', '45444444', '56555555']

正如评论中指出的那样,可以使用列表理解来更简洁地完成此操作,这是一种更加Python化的循环方式:

new_arr = [str(i) + a for i, a in enumerate(array, 1)]