如何在python中向列表添加规则

时间:2012-03-08 22:17:15

标签: python list function python-3.x

我基本上需要能够限制可以附加在列表中的项目。就像在单人纸牌游戏中一样,我需要将一个项目添加到列表中,如果它是按字母顺序跟随该项目,如果它没有,则返回错误。例如;字母d可以附在字母c的前面,如果它的字母不同或顺序错误,那么卡片就不会被移动。

以下代码是迄今为止我能做的最好的代码。

a = ['a','c','e','j','h']

b = ['b','d','f','i','g']

def list_a():

    loop = 0
    choice = 0

    while loop == 1:
        print('''Choose from one of the following options:
                    1. Move item from list b to list a
                    2. add item to list a!''')

        choice = int(input("What would you like to do?: "))
        if choice == 1:
            move_item()

        elif choice == 2:
            add_item()
    return choice

    print('List a: ',a)
    print('List b: ',b)




def move_item():
    loop = 0
    choice = 0

    while loop == 1:
        print('''Choose from one of the following options:
                    1. Move item 1
                    2. move item 2
                    3. Move item 3
                    4. move item 4
                    5. Move item 5!''')

        choice = int(input("What would you like to do?: "))
        if choice == 1:
            a.append(b.pop(0))

        elif choice == 2:
            a.append(b.pop(1))

        elif choice == 3:
            a.append(b.pop(2))

        elif choice == 4:
            a.append(b.pop(3))

        elif choice == 5:
            a.append(b.pop())

    return choice

def add_item():
    print()

list_a()

2 个答案:

答案 0 :(得分:2)

创建列表的子类并覆盖 setitem ,插入和/或存储业务逻辑所需的任何其他内容。

class MyList(list):
  def passes_rules(self, idx, value):
    """ Checks to see if this value can be set to this index """

  def __setitem__(self, idx, value):
    if self.passes_rules(idx, value):
      super(MyList, self).__setitem__(idx, value)

其他人可能会告诉我们 setitem 是否足够,或者您是否需要担心追加和插入。实验也可以,但让我知道你发现了什么。 :)

答案 1 :(得分:0)

您可以使用类似的内容测试letter1之前的letter2是否出现在import string if string.ascii_lowercase.find(letter1) < string.ascii_lowercase.find(letter2): print("Letter 1 comes before letter 2") 之内。

{{1}}