如何在Python中高效地遍历数字数组?

如何在Python中高效地遍历数字数组?,python,arrays,performance,analysis,space-efficiency,Python,Arrays,Performance,Analysis,Space Efficiency,我正在尝试一种更有效的方法来遍历一个数字数组,并找出缺少的数字。我有一个从1到20的数字数组,但缺少一个,而且这些数字没有按时间顺序排列(它们被洗牌): array = [16, 11, 4, 6, 14, 8, 5, 13, 10, 2, 9, 15, 3, 18, 20, 12, 19, 7, 1] 我想到的方法是: for x in range(1, len(array) + 1): if x not in array: print(x) 这种方法的问题是速度慢

我正在尝试一种更有效的方法来遍历一个数字数组,并找出缺少的数字。我有一个从1到20的数字数组,但缺少一个,而且这些数字没有按时间顺序排列(它们被洗牌)

array = [16, 11, 4, 6, 14, 8, 5, 13, 10, 2, 9, 15, 3, 18, 20, 12, 19, 7, 1]
我想到的方法是:

for x in range(1, len(array) + 1):
    if x not in array:
        print(x)

这种方法的问题是速度慢且效率低,如果我需要分析一个非常大的数组(包含数千个数字),这将花费很长时间。

您可以找到
集合。差异

>>> set(range(1, 21)).difference(array)
{17}

您可以找到
set.difference

>>> set(range(1, 21)).difference(array)
{17}

这个问题看起来像是重复的,但没有答案提到
set
方法。@Jean-Françoisfare delegate dupe target,但在这种情况下,初始列表已排序;另外,至少有一个答案使用集合OK,所以问题匹配,同样的答案适用。欺骗它。Cory保持你的代表性,答案是好的。这个问题看起来像是重复的,但没有答案提到
set
方法。@Jean-Françoisfare delegate dupe target,但在这种情况下,初始列表已排序;另外,至少有一个答案使用集合OK,所以问题匹配,同样的答案适用。欺骗它。科里,保持你的声誉,答案很好。