簡體   English   中英

Python:如何在列表中使用附加參數的隨機數

[英]Python: how to use append random numbers of parameter in a list

我的數據集具有隨機維度,因此我想使用exec()eval()讀取數據。 這是我的代碼:

tim = []
var = []
for line in open(fid).readlines():
    str = line.split()
    if line.find('/') >= 0:
       tim.append( datetime.strptime(str[0]+str[1],'%Y/%m/%d%H:%M:%S'))
       depth = int(str[2])
       num = 0
    else:
       if num == 0: 
          for i in range(len(str)): exec('var_%02d = []' %(i))
       for i in range(len(str)): exec('var_%02d.append( str[%d] ) ' % (i,i))
       num += 1
       if num == depth-1:             
          var.append([eval('var_%02d' % i) for i in range(len(str))])

數據格式如下:

2010/01/01 00:00:00 6 2
  10 20
  15 22
  20 30
  25 28
  35 17
  40 35

有時數據可能會添加另一列,如下所示:

2010/01/01 00:00:00 6 2
  10 20 18
  15 22 21 
  20 30 30
  25 28 28
  35 17 17
  40 35 32

通常,我的代碼可以正常工作。 但是,如果我想使它像一個函數,那是行不通的。 有人知道如何將隨機數的參數一起添加到列表中嗎?

您不需要使用exec ,實際上您絕對不應該使用exec 使用多維數組(數組的數組)來收集數字:

tmp = []
tim = []
var = []
for line in open(fid).readlines():
    str = line.split()
    if line.find('/') >= 0:
       tim.append( datetime.strptime(str[0]+str[1],'%Y/%m/%d%H:%M:%S'))
       depth = int(str[2])
       num = 0
    else:
       if num == 0:
          for i in range(len(str)):
              if len(tmp) <= i:
                  tmp.append([])
       for i in range(len(str)):
           tmp[i].append(str[i])
       num += 1
       if num == depth-1:
          var.append([tmp[i] for i in range(len(str))])

print(var)

對於第一組數據,它將打印:

[[['10', '15', '20', '25', '35', '40'], ['20', '22', '30', '28', '17', '35']]]

第二:

[[['10', '15', '20', '25', '35', '40'], ['20', '22', '30', '28', '17', '35'], ['18', '21', '30', '28', '17', '32']]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM