我有一个未指定数字的整数列表。我想找到列表中与某个值匹配的两个整数之间的差异。

from itertools import combinations

#Example of a list
intList = [3, 6, 2, 7, 1]
diffList = [abs(a -b) for a, b in combinations(intList, 2)]

#Given if difference = 2
print diffList.count(2)

代码片段有效,但是当给出更大的列表时,我收到 MemoryError。谁能告诉我代码是否有问题或错误是由于我的硬件限制造成的?

最佳答案

您可以使用以下代码解决您的问题:

result = 0
for a, b in combinations(intList, 2):
    if abs(a - b) == 2:
        result += 1
print result

所以你的问题不仅仅是你的硬件限制,而是你的硬件限制和糟糕的代码。

关于使用 itertools.combinations 生成对时出现 Python 内存错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18906997/

10-12 23:59