我有一个未指定数字的整数列表。我想找到列表中与某个值匹配的两个整数之间的差异。
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/