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']]]
我的数据集具有随机维度,因此我想使用 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']]]