很抱歉,如果这很复杂,但我会尽力解释这个问题。我有两个列表列表,它们具有相同数量的元素,但以不同的方式组织,例如:
a = [1],[2,3,4],[5,6],[7,8,9],[10,11,12,13]
b = [1,2,3,4],[5,6],[7,8,9],[10,11,12],[13]
我试图1)找到两个列表列表之间的不同列表,2)对于每个不同的列表,找到较小子集的长度。因此,对于列表a,[1]和[2,3,4]是b中[1,2,3,4]的子集 - 因此,[1]是较小的子集,其长度为1。
我可以通过以下方式为a和b创建不同列表的列表:
matches = [x for x in a if x in b]
adiff = [x for x in a if x not in matches]
bdiff = [x for x in b if x not in matches]
但是,我似乎无法进入第2部分。这在python中是否可行?
编辑:抱歉,b中的列表应为[5,6]。因此,当a与b进行比较时,a的期望输出为1,假设[1]的长度为1.当b与a进行比较时,所需的输出也为1,因为[13]的长度也是1。
答案 0 :(得分:3)
由于您正在将这些列表列表视为集合,但是对于看似不重要的顺序以及关于子集等,可能有助于将这些列表实际转换为集合集(或实际上<table align="center">
<thead>
<tr>
<th>No.</th>
<th colspan="3">Types</th>
<th>Remark</th>
</tr>
<tr>
<th></th>
<th>A</th>
<th>B</th>
<th>C</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Data1</td>
<td>Data2</td>
<td>Data3</td>
<td>Ok</td>
</tr>
</tbody>
</table>
{ {1}})。然后,您可以使用set
,frozenset
,set
或&
等^
操作来查找结果。
<
或寻找超集和最小子集对:
-