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

Python 如何在此处检查列表中的元素,python,list,append,permutation,Python,List,Append,Permutation,我对Python有点陌生。 作为代码的一部分,我需要一个函数来检查列表中的元素,如果每个元素与后面/前面的元素之间的差异正好为1,则忽略它。例如: [1,2,5,10]无效 [9,14,19,18]无效 [3,6,9,20]有效 这是我的密码: def code(self): for line,lists in enumerate(permutations(range(4))): valid_list = []

我对Python有点陌生。 作为代码的一部分,我需要一个函数来检查列表中的元素,如果每个元素与后面/前面的元素之间的差异正好为1,则忽略它。例如:

[1,2,5,10]无效

[9,14,19,18]无效

[3,6,9,20]有效

这是我的密码:

def code(self):

            for line,lists in enumerate(permutations(range(4))):
                valid_list = []
                for index,elements in enumerate(lists) :
                    if index != len(lists)-1:  #list index out of range escape condition
                        if lists[index] - lists[index+1] == 1 or lists[index+1] - lists[index] == 1 :
                            break


                    valid_list.append(lists)


            return good_items
因此,我想检查置换列表的元素,如果它们正常,则将该列表附加到有效的_列表中以供最终返回,但我很难做到这一点。我不知道应该将有效的_列表放在哪里。AppendList这样,当我确保选中所有不需要的3个元素时,它会附加

我希望能得到一些帮助

问题是,我知道算法很糟糕,实际代码也很糟糕,我只想知道如何让它工作。 改进代码的建议得到了广泛的认可,但并不完全是我现在想要的:3

有效列表的定义应该在for循环之外,否则它将被覆盖。此外,使用标志_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()

你的问题是什么?如何检查要声明的条件、如何附加到列表或如何使用描述性名称代码修复函数?@timgeb我无法获得预期结果。该置换函数生成了24个列表。其中2个满足我的条件,分别为:[1,3,0,2]和[2,0,3,1],但当我运行此代码时,我会得到一个空列表,或者[3,2,1,0]迭代结束时的最后一个列表,这两个列表显然都不是答案。我想知道如何解决这个问题。非常感谢。我现在得到了:3