There's the code with the TypeError in it. "list indices must be integers, not list", though they are integers. I'd appreciate you helping me figure out what's wrong. What I need is to get matrix 7x5 from source 7x5 tab with different values. The error occurs on the last line.
lines = []
with open("text.txt") as f:
for line in f:
line = [int(x) for x in line if (x != ' ') and (x != '\n')]
lines.append(line)
f.close()
What I have after reading file is list of lists with numbers called "lines". It's integers. Not strings. Like:
>> [[1, 2, 3...], [4, 5, 6...], [7, 8, 9...],[...]]
i = 1
j = 1
T = []
T.append(lines[0][0])
I made this for avoiding IndexError
(list out of range) on last line (i-1
and stuff). Though, I don't think it's python-way really. I'd appreciate help with this thing too.
for i in lines:
for j in lines:
T[i][j] = lines[i][j] + max(T[i][j-1], T[i-1][j])
This is where error occurs. I don't get what should I fix if i
, j
are already int
.
i
and j
are not indices; they are values from the lines
list. Python for
loops are for-each constructs.
Use:
for i, line in enumerate(lines):
for j, value in enumerate(line):
T[i][j] = value + max(T[i][j - 1 % len(T[i])] + T[i - 1 % len(T)][j])
where the % len()
calculations 'wrap around' to the last entry in T
or T[i]
when i
and / or j
are 0
. The enumerate()
function adds indices to the loop.
This does assume you already pre-built a nested list of lists structure in T
.