【发布时间】:2017-12-13 05:40:23
【问题描述】:
我正在尝试将一个元素附加到列表中的列表中,该列表每次都有一个递增的值:
def get_data(file):
matrix = [ ['one','two','three'] ] #list of lists
test_count = 0
line_count = 0 #keep track of which line we are on
for line in file:
if line.find('example') != -1: #test for example string
temp_a = re.findall(r"\'(.+?)\'",line)[0]
print matrix[test_count][0] #should print 'one'
matrix[test_count][0].insert(temp_a) #should insert temp_a instead of 'one'
test_count += 1 #go to next "new" list in the matrix
line_count += 1 #go to next line
我想要的是 findall 进入 temp_a 并从那里将其插入列表中第一个列表的索引 0 的结果。那么下次findall为真时,我想将temp_a插入到第二个列表的索引0中。
例如,如果第一个 temp_a 值为 9,我希望矩阵中的第一个列表是: [[9,y,z]] 如果在第二个 findall 我的 temp_a 为 4,我希望矩阵变为: [ [9,y,z], [4,y,z] ]
上面的代码是我迄今为止最好的尝试。 我有两个问题:
1) 如果列表的数量不固定,如何初始化“列表列表”?
2) 列表 ['one','two','three'] 用于测试打印正在发生的事情。如果我尝试打印出 matrix[test_count][0],我会收到“index out of range”错误,但是当我将它更改为打印出 matrix[0][0] 时,它会正确打印“one”。有没有我在这里遗漏的范围内的东西?
【问题讨论】:
-
如果您发布一个示例输入文件和预期输出会有所帮助。
-
列表没有任何内容,除非您在其中添加内容。因此,如果那里什么都没有,访问
matrix[0]可能会失败。但是,matrix.append(temp_a)肯定会在列表末尾添加一些内容。 -
是的,我知道 matrix.append 会添加到末尾,但我想添加到 matrix[var][0].append 示例输入文件是简单的逐行文本,问题是t 带有文件输入,但带有矩阵定义和附加...
-
您正在读取的这个文件到底是什么样的?我做了一个测试文件,我得到的
index out of bounds错误出现在你的正则表达式上,所以我认为我的文件是错误的。