循环遍历列表并同时将列表中的一项与其他两项进行比较

时间:2021-02-19 18:22:15

标签: python sql

This itertools example 仅将一项与另一项进行比较。我需要同时将 1 个项目与其他 2 个项目进行比较。

my_list = [10, 420, 11]

我需要能够比较下面查询中的这些项目,并进行以下比较:

  • 10 到 420 和 11(如下面的代码所示),
  • 420 到 10 和 11,
  • 11 到 420 和 10。

我在 SQL 查询中运行它。

SELECT COUNT(*) FROM (
   SELECT app FROM vendor WHERE vendor=10 AND active
   INTERSECT
   SELECT app FROM vendor WHERE vendor NOT IN (420, 11) AND active = 0
   )

2 个答案:

答案 0 :(得分:2)

这将比较列表中元素的所有可能组合。

arr = [10, 420, 11]

for i, el in enumerate(arr):
    leftover = arr[:i] + arr[i+1:]
    print(el, leftover, el in leftover)

打印以下内容:

10 [420, 11] False
420 [10, 11] False
11 [10, 420] False

答案 1 :(得分:2)

编写一个函数,该函数返回删除了指定元素的列表的副本。然后遍历列表,返回每个项目和删除该项目的列表。

def list_without(l, i):
    result = l[:] # copy list
    l.pop(i) # remove the specified index
    return l

my_list = [10, 420, 11]

my_combinations = [(item, list_without(my_list, i)) for i, item in enumerate(my_list)]
print(my_combinations)
# output:
# [(10, (420, 11)), (420, (10, 11)), (11, (10, 420))]
相关问题