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

一般来说,我的代码工作正常。但是如果我想让 if 像一个函数,它就不起作用了。有人知道如何在列表中将参数的随机数附加在一起吗?

您不需要使用 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']]]