Python Forum
2d Array adds last element to entire list
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
2d Array adds last element to entire list
#1
Good Afternoon!

First time poster!

I keep running into this simple problem when trying to fill my 2d array from my SQL. For some reason it will not store the values into my variables. I am really not too sure what else to do here? It seems painfully obvious and is probably staring at me right in the face.


Here is my function -

def GetPlayerData(conn,cur):
    
    rows, cols = (6, 6)
    Players = [[0]*cols]*rows
    
    
    cur.execute('SELECT * FROM Players')
      
    for x in range (1,6):
        nextline = cur.fetchone()
        Players[x][0]= nextline['Players']
        Players[x][1]= nextline['Total_Cash']
        Players[x][2]= nextline['Risk_Level']
        print(Players[x][0])
        
    print(Players[2][2])

    return Players
My first print(Players[x][0]) Displays the entire list as it cycles through x.
My second print(Players[2][2]) shows the last 'players' in the list. every single players[1-5] is stored as the last item in my database.

Thank you
Reply
#2
After looking at the screen for 4 hours, I came to the realization that I was making 5 different arrays and I could just use

Player = {}
Player[1,0] instead of Player [1][1]
Thanks guys!
Reply
#3
Your initial problem was that you were not making different lists, but just several copies of one list. The construction: [[]] * num takes the inside list and makes num references to it, but they're all the same list. So each time through was overwriting the previous trips through the loop.

>>> players = [[0] * 4] * 3
>>> players
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>> players[0][1] = "x"
>>> players
[[0, 'x', 0, 0], [0, 'x', 0, 0], [0, 'x', 0, 0]]
For this to work, you'd need to make different lists.

>>> players = [[0] * 4 for x in range(3)]
>>> players
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>> players[0][1] = "x"
>>> players
[[0, 'x', 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  help with a script that adds docstrings and type hints to other scripts rickbunk 2 1,246 Feb-24-2025, 05:12 AM
Last Post: from1991
  removing one list element without using its index paul18fr 7 1,168 Feb-22-2025, 07:59 PM
Last Post: DeaD_EyE
  question about changing the string value of a list element jacksfrustration 4 2,097 Feb-08-2025, 07:43 AM
Last Post: jacksfrustration
  extract an element of a list into a string alexs 5 3,678 Aug-30-2024, 09:24 PM
Last Post: alexs
  element in list detection problem jacksfrustration 5 1,855 Apr-11-2024, 05:44 PM
Last Post: deanhystad
  Elegant way to apply each element of an array to a dataframe? sawtooth500 7 2,679 Mar-29-2024, 05:51 PM
Last Post: deanhystad
  Make entire script run again every 45 mo NDillard 0 908 Jan-23-2024, 09:40 PM
Last Post: NDillard
  list in dicitonary element problem jacksfrustration 3 1,637 Oct-14-2023, 03:37 PM
Last Post: deanhystad
  Find (each) element from a list in a file tester_V 3 2,202 Nov-15-2022, 08:40 PM
Last Post: tester_V
  Сheck if an element from a list is in another list that contains a namedtuple elnk 8 3,422 Oct-26-2022, 04:03 PM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020