从给定的整数列表中返回差为 2 的所有整数对

Rar*_*res 1 python arrays algorithm

就像标题所说的那样,我需要找到列表中整数的 2 之差,并且必须返回一个包含元组的列表。

initial_list = [1, 2, 3, 4]
expected_output = [(1, 3), (2, 4)]
Run Code Online (Sandbox Code Playgroud)

我写了这段代码:

arr = [1, 2, 3, 4]
n = 2
arr1 = []
for i in range(len(arr)):
    x = i + n
    if x in arr:
        arr1.append(x)
print(arr1)
Run Code Online (Sandbox Code Playgroud)

但不起作用...你能帮帮我吗?谢谢

Mar*_*yer 5

如果将初始列表设为集合,则可以有效地测试n+2每个 n 是否在集合中,如果是,则包含元组:

initial_list = [1, 2, 3, 4]
s = set(initial_list)

[(n, n+2) for n in initial_list if n + 2 in s ]
# [(1, 3), (2, 4)]
Run Code Online (Sandbox Code Playgroud)