How to concatenate strings with iteration in a loop?

Paul Moore p.f.moore at gmail.com
Tue May 21 04:40:38 EDT 2019


On Tue, 21 May 2019 at 09:25, Frank Millman <frank at chagford.com> wrote:
>
> On 2019-05-21 9:42 AM, Madhavan Bomidi wrote:
> > Hi,
> >
> > I need to create an array as below:
> >
> > tempStr = year+','+mon+','+day+','+str("{:6.4f}".format(UTCHrs[k]))+','+ \
> > str("{:9.7f}".format(AExt[k,0]))+','+str({:9.7f}".format(AExt[k,1]))+','+ \
> > str("{:9.7f}".format(AExt[k,2]))+','+str("{:9.7f}".format(AExt[k,3]))+','+ \
> > str("{:9.7f}".format(AExt[k,4]))+','+str("{:9.7f}".format(AExt[k,5]))+','+ \
> > str("{:9.7f}".format(AExt[k,6]))+','+str("{:9.7f}".format(AExt[k,7]))+','+ \
> > str("{:9.7f}".format(AExt[k,8]))+','+str("{:9.7f}".format(AExt[k,9]))
> >
> >
> > k is a row index
> >
> > Can some one suggest me how I can iterate the column index along with row index to concatenate the string as per the above format?
> >
> > Thanks in advance
> >
>
> The following (untested) assumes that you are using a reasonably
> up-to-date Python that has the 'f' format operator.
>
> tempStr = f'{year},{mon},{day},{UTCHrs[k]:6.4f}'
> for col in range(10):
>      tempStr += f',{AExt[k, col]:9.7f}'
>

As a minor performance note (not really important with only 10 items,
but better to get into good habits from the start):

temp = [f'{year},{mon},{day},{UTCHrs[k]:6.4f}']
for col in range(10):
     temp.append(f',{AExt[k, col]:9.7f}')

tempStr = ''.join(tempStr)

Repeated concatenation of immutable strings (which is what Python has)
is O(N**2) in the number of chunks added because of the need to
repeatedly copy the string.

Paul



More information about the Python-list mailing list