Python检查列表中的项是否是免费的

时间:2016-01-28 19:07:27

标签: python arrays python-2.7

我有一个array,其中包含9个char变量。我使用for循环将它们打印成3行。我想检查一行中3个变量中的2个是否相同,并创建将改变第三个变量以匹配其他变量的函数。
我想垂直和水平都这样做。
我是否必须将数组更改为 2D数组?这会让我改变近一半的代码。
我是否有可能不必像这样手动编写if语句:

if array[0] == array[1]:
    change the_third_var
elif array[1] == array[2]:
    change the_first_var
elif array[0] == array[2]:
    change the_sec_var

但它会使用for或任何其他循环自动检查它吗? 该解决方案是否可以帮助我简化下面的代码(可选)?

def check_winner(pl_array, player_choice, computer_choice):
    vertical = [2, 5, 8]
    diagonal = [6, 7, 8]
    # checking vertical lines
    for each in vertical:
        if pl_array[each - 2] == pl_array[each - 1] == pl_array[each]:
            if pl_array[each] == player_choice or pl_array[each] == computer_choice:
                return True
    # checking diagonal lines
    for every in diagonal:
        if pl_array[every - 6] == pl_array[every - 3] == pl_array[every]:
            if pl_array[every] == player_choice or pl_array[every] == computer_choice:
                return True
    # across
    if pl_array[8] == pl_array[4] == pl_array[0]:
        if pl_array[8] == player_choice or pl_array[8] == computer_choice:
            return True
    elif pl_array[6] == pl_array[4] == pl_array[2]:
        if pl_array[6] == player_choice or pl_array[2] == computer_choice:
            return True
    else:
        return False

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

即使它有点冗长,我宁愿使用你发布的if / elif逻辑,而不是任何其他选项。您可以将其包装在一个函数中,只需在需要时调用它就可以减少代码量。

那就是说,你也可以做以下丑陋的事情:

for i in range(-1, 2):
    if arr[i-1] == arr[i]:
        arr[i+1] = arr[i]