如何在此处检查列表的元素

时间:2016-04-05 20:22:43

标签: python list append permutation

我是Python的新手。 作为我的代码的一部分,我需要一个函数来检查列表的元素并忽略它,如果每个元素之间的差异与它之前/之后的差异恰好为1.例如:

[1,2,5,10]无效

[9,14,19,18]无效

[3,6,9,20]有效

这是我的代码:

getData

所以我想查看"排列列表"的元素。如果它们是好的,将该列表附加到" valid_list"为了最后的回归,但我很难这样做。我不知道我应该把valid_list.append(列表)放在哪里,这样当我确定所有3个元素(不需要最后一个元素)被检查时,它会附加。

我很感激一些帮助:3

P.s:所以这就是事情,我知道算法太糟糕了,实际的代码也差了,我只想知道如何让它工作。 关于改进代码的建议受到广泛赞赏,但不完全是我现在正在寻找的内容:3

1 个答案:

答案 0 :(得分:0)

valid_list的定义应该超出for循环,否则将被覆盖。此外,使用flag_valid指示是否存在无效元素。试试这段代码:

from itertools import permutations 

def code():
    valid_list = []
    for line,lists in enumerate(permutations(range(4))):        
        flag_valid = True
        for index,elements in enumerate(lists):
            if index != len(lists) - 1:  #list index out of range escape condition
                if abs(lists[index] - lists[index + 1]) == 1:
                    flag_valid = False
                    break;
        if flag_valid == True:
                valid_list.append(lists)
    return valid_list

print code()