What is the the best and easiest way to remove elements from a list?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Johan Novak
    New Member
    • Dec 2010
    • 3

    What is the the best and easiest way to remove elements from a list?

    Hi!
    I'm working on a solitaire game, with a different card deck. First I create a big list with 81 elements (cards in this case), cardList. From this list, six cards are ramdomly picked and put into another list, playerCardList, and printed on the court.

    Once the cards are printed the player is asked to remove three cards. I would like these cards to be removed from cardList so they don't appear again. I would also like them to be put into a new list where I can compare them to one another.

    Code:
    class Kortlek():
        def __init__(self,colors=[], forms=[], numbers=[], grades=[]):
            self.cardList = []
            self.playerCardList = []
            for color in colors:
                for form in forms:
                    for number in numbers:
                        for grade in grades:
                            tmp= Kort(color, form, number, grade)
                            self.cardList.append(tmp)
    
        def cards(self):
            for a in random.sample(self.cardList, 6):
                self.playerCardList.append(a)
    
            self.write()
    
            self.question()
    
        def question(self):
            val = raw_input("Would you like to remove three cards?\n1.Yes\n2.Quit\n")
            if val == "1":
                for kort in range(3):
                    txt = "Write the number of card " + str(card) + ":\n"
                    kortID = int(raw_input(txt))
                    try:
                        self.playerCardList.pop(kortID-1)
                    except IndexError:
                        print "That card is not in your pile"
                        kortID = int(raw_input(txt))
                        self.playerCardList.pop(kortID-1)
    
                
                self.addCard()
    
            elif val == "2":
                quit()
    
            else:
                print "Pick either 1 or 2"
    
                
    
        def addCard(self):
            for a in random.sample(self.cardList, 3):
                self.playerCardList.append(a)
    
            self.write()
            self.question()
    
        def write(self):
            for b in self.playerCardList:
                b.visa()
    
    def cardShuffle():
        card = Kortlek(["blue   ", "yellow ", "red    "],["triangel", "circle  ", "square  "],[1, 2, 3],[1, 2, 3])
        card.cards()
    Thankful for any help! :)
  • Sean Pedersen
    New Member
    • Dec 2010
    • 30

    #2
    the pop(elementNumb er) removes and returns an item at offset elementNumber

    Comment

    • Johan Novak
      New Member
      • Dec 2010
      • 3

      #3
      Code:
      # -*- coding: utf-8 -*-
      import random
      
      
      class Kortlek():
          def __init__(self,colors=[], forms=[], numbers=[], grades=[]):
              self.cardList = []
              self.playerCardList = []
              for color in colors:
                  for form in forms:
                      for number in numbers:
                          for grade in grades:
                              tmp= Kort(color, form, number, grade)
                              self.cardList.append(tmp)
      
          def spelkorten(self):
              for a in random.sample(self.cardList, 6):
                  self.playerCardList.append(a)
      
              self.skrivUt()
      
              self.fraga()
      
          
          def kortval():
              kortvalen=[]
              
      
          def fraga(self):
              val = raw_input("Vill du ta bort tre korta blalba??\n1.Ja\n2.Avsluta\n")
              if val == "1":
                  for kort in range(3):
                      txt = "Skriv in nummret på kort " + str(kort) + ":\n"
                      kortID = int(raw_input(txt))
                      try:
                          self.playerCardList.remove(kortID-1)
                      except IndexError:
                          print "Det angivna kortet finns inte i din hög!"
                          kortID = int(raw_input(txt))
                          self.playerCardList.remove(kortID-1)
                          
      
                  #CurrentItem = playerCardList(INDEX_NUMBER_OF_ITEM_1)
      
                  #cardList.remove(CurrentItem)
      
                  #CurrentItem = playerCardList(INDEX_NUMBER_OF_ITEM_2)
      
                  #cardList.remove(CurrentItem)
      
                  #CurrentItem = playerCardList(INDEX_NUMBER_OF_ITEM_3)
      
                  #cardList.remove(CurrentItem)
      
                  self.laggTill()
      
              elif val == "2":
                  quit()
      
              else:
                  print "Välj aningen 1 eller 2"
      
                  
      
          def laggTill(self):
              for a in random.sample(self.cardList, 3):
                  self.playerCardList.append(a)
      
              self.skrivUt()
              self.fraga()
      
          def skrivUt(self):
              for b in self.playerCardList:
                  b.visa()
                  
              
                          
                  
                  
      
      class Kort():
          def __init__(self,color,form,number,grade):
              self.color = color
              self.form = form
              self.number = number
              self.grade = grade
          def visa(self):
              text = str(self.color) + "\t"
              text += str(self.form) + "\t"
              text += str(self.number) + "\t"
              text += str(self.grade)
              print text
      
      
      
      def spelregler():
          print " "
          print "1. Vad går spelet ut på?"
          print "2. Hur får jag poäng?"
          print "3. Tillbaka till huvudmenyn\n"
          spelregelsVal = raw_input("Vilket alternativ väljer du?")
          
          if spelregelsVal == "1":
              print "\nFörst kommer sex olika kort att slumpas ut på spelplanen.\nSpelet går sedan ut på att du ska välja ut tre av\ndessa kort som sedan kommer att jämföras med varann."
              spelregler()         
      
          elif spelregelsVal == "2":
              print "\nTvå poäng ges om du väljer ut \nTre päng...."
              spelregler()
      
          elif spelregelsVal == "3":
              meny()
      
      
          else:
              print "Välj antingen val 1, 2 eller 3"
              
      
      
      
      def kortutdelning():
          kort = Kortlek(["blue   ", "yellow ", "red    "],["triangel", "circle  ", "square  "],[1, 2, 3],[1, 2, 3])
          kort.spelkorten()
      
      
      
      
      
      
      def fraga1(fragan):
          return raw_input (fragan)
      
      
      
      
      
      
      
          
      
      
      
      
      
      def meny():
          print "\n" * 2 + "*" * 80
          print "Hej och välkommen till patiens med en annorlunda kortlek"
          print "*" * 80 + "\n" * 2
          print "1. Börja spela?"
          print "2. Hur spelar jag?"
          print "3. Avsluta?"
          print " "
          return fraga1("Vad väljer du? ")
      
      val = "1"
      
      while val != "3":
          val = meny()    
          if val == "1":
              kortutdelning()
      
              val2 = raw_input("Vill du spela igen? Ja/Nej")
      
              val2 = "Ja"
      
              while val2 != "Ja":
      
                  if val2 =="Ja":
                      kortutdelning()
                      print "Då kör vi! /n"
              
                  elif val2 == "Nej":
                      quit()
                      print "På återseende"
      
                  else:
                      print "Välj antingen Ja eller Nej!"
      
       
          elif val == "2":
              spelregler()
              
      
          elif val == "3":
              print "På återseende"
              quit()
      
          else:
              print "Välj antingen val 1 eller 2"
      
      
      
      meny()

      Comment

      Working...