【发布时间】:2016-07-25 23:33:19
【问题描述】:
我对 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
所以我想检查“排列列表”的元素,如果它们没问题,将该列表附加到“valid_list”以进行最终返回,但我正在努力这样做。我不知道应该将有效列表放在哪里。 append(lists) 这样当我确定所有 3 个元素(最后一个不需要)都被检查时,它会追加。
我将不胜感激:3
P.s:事情是这样的,我知道算法很糟糕,实际代码也很糟糕,我只想知道如何让它工作。 改进代码的建议受到广泛赞赏,但不完全是我现在正在寻找的:3
【问题讨论】:
-
您的问题是什么?如何检查您所描述的条件,如何附加到列表或如何使用描述性名称
code修复函数? -
@timgeb 我无法得到预期的结果。从该排列函数生成了 24 个列表。其中 2 个符合我的条件:[1,3,0,2] 和 [2 ,0,3,1] 但是当我运行这段代码时,我得到一个空列表,或 [3,2,1,0] (迭代完成时的最后一个列表),这两个显然都不是答案。我想知道如何解决这个问题。
标签: python list append permutation