[英]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.