On 21/05/19 8:40 PM, Paul Moore wrote:
On Tue, 21 May 2019 at 09:25, Frank Millman <fr...@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.


A more pythonic approach might be to eschew the "k is a row index" and resultant range(), by gathering the temperature readings into a list/tuple (tuple unpacking at read-step or zip(), as appropriate). The point of which (hah!) is to get rid of "pointers", and replace the 'algebra' with more readable code.

The collection can then be processed into the string using .append() and/or .join(), perhaps with a list comprehension/generator...


--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to