basically I'm making an ascii turn based game that uses a grid. I want to be able to make a second grid or 'layer' that holds data about that cell and has a direct relationship to the first grid through sharing the same index values. While i have achieved some working results in a previous build of my game, even in that i got stuck because I couldn't figure out how to get the list indices.
Now I've found out that I can get the indices by using the inumerate() function. Below is a practice program I tried:
#some example lists
list = [[0, 2],[2, 3], [9,4], [5, 9]]
list2 =[[0, 0],[0, 0],[0, 0],[0, 0]]
# a for loop to iterate through all elements of the nested list
# using enumerate to to gain access to the list indices
for i, j in enumerate(list):
for ii, jj in enumerate(list):
# if statements below seemingly not working.
# jj is supposed to hold the contents of the current list cell
# also when the 'else' kicks in because jj didn't match anything
# throws an error index out of range
if jj == 0:
list2[i][ii] = 'A'
elif jj == 2:
list2[i][ii] = 'C'
else:
list2[i][ii] = 1
print(i, ii)
print(jj)
for i in list2:
print(i)
The program doesn't work, (I commented about the errors I get in the code above) and I'd like to know how I can get it to work. Thanks a lot for your time and patience.
I think you want to assign new values to the second list according to values of first list. Try this:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#some example myLists
myList = [[0, 2],[2, 3], [9,4], [5, 9]]
myList2 =[[0, 0],[0, 0],[0, 0],[0, 0]]
for index0, value0 in enumerate(myList):
for index1, value1 in enumerate(value0):
if value1 == 0:
myList2[index0][index1] = 'A'
elif value1 == 2:
myList2[index0][index1] = 'C'
else:
myList2[index0][index1] = 'else'
print myList2
Hope it helps.