【问题标题】:For each numbers list or (tuple) from Lists or (Tuples) get a difference from this main one list and return or store all those Lists to variable对于列表中的每个数字列表或(元组)或(元组),从这个主列表中获取差异,并将所有这些列表返回或存储到变量
【发布时间】:2022-01-24 20:31:30
【问题描述】:

我的需要是从主列表中获取许多列表的列表差异或反向(不是(反向)),并将这些反向列表保存到变量中以打印它们以查看输出。

仅供参考,我知道如何获得两个列表的差异,但不知道许多列表的差异。 两个列表的区别示例代码:

a = [1,2,3,4,5,6,7,8,9,10]
b = [2,4,6,8,10]
c = [number for number in a if number not in b]
print(c)  # OUTPUT: [1, 3, 5, 7, 9]

我从数据库中的表中获取所有列表,请参见下面的两行代码:

t_numbers = cur.execute("SELECT n1, n2, n3, n4, n5 FROM Numbers")
all_list_of_numbers = [num for num in t_numbers]

main_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

all_list_of_numbers = [(1, 2, 3, 4, 5), (1, 2, 3, 5, 9), (2, 4, 7, 8, 10), (3, 5, 6, 8, 10),
                     (4, 5, 6, 8, 9), (1, 3, 6, 7, 10), (2, 3, 6, 8, 10), (5, 7, 8, 9 ,10), 
                     (1, 2, 4, 6, 9), (1, 2, 3, 8, 9), (1, 5, 6, 8, 9), (2, 3, 4, 5, 7), 
                     (1, 3, 5, 7, 10), (2, 4, 5, 6, 8), (3, 5, 8, 9, 10), (2, 3, 4, 7, 9), 
                     (3, 4, 7, 9, 10), (3, 4, 6, 7, 8), (5, 6, 7, 8, 10), (1, 4, 6, 7, 9)]

我正在编写一个函数,但它并没有按照我想要返回列表的方式运行。 也许我不需要函数,也许使用列表理解或其他更好的方法?

def Diff(main_list, all_list_numbers):
     return list(set(main_list) - set(all_list_numbers)) + list(set(all_list_numbers) - set(main_list))

我还有一个函数可以检查并从 Numbers 表中获取五个数字的总数:

def get_total_numbers(allfiveNumbers):
    count = 0
    for numbers in allfiveNumbers:
        count += 1

# print("All the number in the list: ", get_total_numbers(all_list_numbers))
# OUTPUT -- All five numbers lists is:  20

【问题讨论】:

  • 这是一种特别的语言吗?

标签: python list difference inverse


【解决方案1】:

这是一种方法:

main_set = set(main_list)
res = [main_set.symmetric_difference(i) for i in all_list_of_numbers]

输出:

[{6, 7, 8, 9, 10},
 {4, 6, 7, 8, 10},
 {1, 3, 5, 6, 9},
 {1, 2, 4, 7, 9},
 {1, 2, 3, 7, 10},
 {2, 4, 5, 8, 9},
 {1, 4, 5, 7, 9},
 {1, 2, 3, 4, 6},
 {3, 5, 7, 8, 10},
 {4, 5, 6, 7, 10},
 {2, 3, 4, 7, 10},
 {1, 6, 8, 9, 10},
 {2, 4, 6, 8, 9},
 {1, 3, 7, 9, 10},
 {1, 2, 4, 6, 7},
 {1, 5, 6, 8, 10},
 {1, 2, 5, 6, 8},
 {1, 2, 5, 9, 10},
 {1, 2, 3, 4, 9},
 {2, 3, 5, 8, 10}]

【讨论】:

  • 非常感谢您的回答 FSL,我得到了正确的输出。我写的列表理解与你的代码非常接近,但我错过了一些东西,它破坏了我的代码,或者没有阅读多个列表。
  • 很高兴它有帮助!如果你觉得它有帮助,你可以考虑接受这个答案。
猜你喜欢
  • 2022-11-04
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 2017-08-29
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
相关资源
最近更新 更多