我是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
答案 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()