title: Printing nested lists - Python
body: <p>Can someone help me get this print properly?</p>
  
  <pre><code>class Deck(object):
      def __init__(self):
          self.cards = []
          from random import shuffle
          shuffle(self.cards)
  
      #views all cards in the deck
      def view_deck(self):
          for x in self.cards:
              print(x.name)
  
      #takes in an (x) integer and views the top x cards of the deck
      def view_number_of_cards(self, cards_to_view):
          for x in self.cards[:cards_to_view]:
              print(x.name)
  
  class Player(object):
      def __init__(self):
          self.hand = []
          self.row_1 = []
          self.row_2 = []
          self.row_3 = []
          self.row_4 = []
          self.row_5 = []
          self.rows = []
          self.rows.append(self.row_1)
          self.rows.append(self.row_2)
          self.rows.append(self.row_3)
          self.rows.append(self.row_4)
          self.rows.append(self.row_5)
          self.graveyard = []
          self.deck = Deck()
  
      #draw a card from deck to hand
      def draw_card(self):
          c = self.deck.cards
          cardDrawn = c.pop(0)
          self.hand.append(cardDrawn)
  
      #shuffle deck
      def shuffle_deck(self):
          from random import shuffle
          shuffle(self.deck.cards)
  
      def play_card(self, card, row):
          self.rows[row-1].append(card)
          self.graveyard.append(card)
          self.hand.remove(card)
  
      def update(self):
          i = 1
          for x in self.rows:
              print "Lane "+str(i)+": "+str(x[0]),
              i = i+1
  </code></pre>
  
  <p>When I try this:</p>
  
  <pre><code>x = Player()
  x.deck.cards = [1, 2, 3, 4]
  x.draw_card()
  x.play_card(x.hand[0], 1)
  x.rows
  [[1], [], [], [], []]
  x.update()
  </code></pre>
  
  <p>This happens</p>
  
  <pre><code>Lane 1: 1
  
  Traceback (most recent call last):
    File "&lt;pyshell#5&gt;", line 1, in &lt;module&gt;
      x.update()
    File "C:/Users/Carl/Desktop/try.py", line 53, in update
      print "Lane "+str(i)+": "+str(x[0]),
  IndexError: list index out of range
  </code></pre>
  
  <p>In the console it seems to be working properly if I try to print "Lane 1: "+rows[0][0] etc but for some reason I keep getting this IndexError which doesn't make sense to me because there are definitely other lists in the x-list range. at worst, because the lists are predefined (row_2 = []) then it should print "Lane 2:  " but that doesn't even happen.  Thanks for the help!</p>