以下问题涉及Python 3.6。假设我有一些集合的列表,例如:
L1 = [{2,7},{2,7,8},{2,3,6,7},{1,2,4,5,7}]
L2 = [{3,6},{1,3,4,6,7},{2,3,5,6,8}]
L3 = [{2,5,7,8},{1,2,3,5,7,8}, {2,4,5,6,7,8}]
我需要找到L1、L2和L3中每个元素之间的交集。例如:
{2,7}.intersection({3,6}).intersection({2,5,7,8})= empty
{2,7}.intersection({3,6}).intersection({1,2,3,5,7,8})= empty
{2,7}.intersection({3,6}).intersection({2,4,5,6,7,8})= empty
{2,7}.intersection({1,3,4,6,7}).intersection({2,5,7,8})= {7}
{2,7}.intersection({1,3,4,6,7}).intersection({1,2,3,5,7,8})= {7}
{2,7}.intersection({1,3,4,6,7}).intersection({2,4,5,6,7,8})= {7}
如果我们一直按照这样的方式进行,最终得到以下集合:
{{空},{2},{3},{6},{7},{2,3},{2,5},{2,6},{2,8},{3,7},{4,7},{6,7}}
假设:
- 我有许多列表 L1、L2、L3、...Ln。而我不知道我有多少个列表。
- 每个列表 L1、L2、L3..Ln 都很大,所以我不能将它们全部加载到内存中。
我的问题是:是否有任何方法可以顺序地计算该集合,例如在 L1 和 L2 之间进行计算,然后使用结果与 L3 进行计算,依此类推...
list_generator
设为迭代器的原因。你可以从文件中读取行并逐一地生成它们,利用从open()
获得的文件对象已经是文件行的迭代器这一事实。 - Norrius