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.
- DO NOT use name of built-in function as name of your variable.
- Use meaningful variable name instead of meaningless ones, like ii, jj, which will make your code hard to read
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.