Python - 列表列表中的不常见元素


在本文中,我们将学习各种方法,使用这些方法我们可以找到列表列表中的不常见元素,这意味着该元素不存在于其他列表中。在使用 Python 中的列表列表时,通常会遇到需要查找这些嵌套结构中存在的不常见元素的情况。查找列表列表中的不常见元素可以使用各种方法和技术来实现。在本文中,我们将探讨 8 个示例和方法,以帮助您轻松识别列表列表中的不常见元素。

示例

让我们通过一个例子来理解 -

list1 = [[1, 2], [3, 4], [5, 6]] 
list2 = [[3, 4], [5, 6], [7, 8]]

输出

[1, 2, 7, 8]

因此,您可以观察到我们给出了两个列表列表,我们将比较这两个列表并检查哪个元素不存在于另一个列表中,因此 list1 中的元素 [1,2] 不存在于 list2 中,并且 list2 中的元素 [7,8] 不存在于 list1 中,因此输出将为 [1,2,7,8]。

方法 1:使用嵌套循环

这是一种非常基本的方法,我们将在其中使用嵌套循环来查找列表列表中的不常见元素。

示例

list1 = [[1, 2], [3, 4], [5, 6]]
list2 = [[3, 4], [5, 6], [7, 8]]
uncommon_elements = []
for subl1 in list1:
   if subl1 not in list2:
      uncommon_elements.append(subl1)
for subl2 in list2:
   if subl2 not in list1:
      uncommon_elements.append(subl2)
print("list1:", list1)
print("list2:", list2)
print("Uncommon elements from the lists of lists :",uncommon_elements)

输出

list1: [[1, 2], [3, 4], [5, 6]] 
list2: [[3, 4], [5, 6], [7, 8]] 
Uncommon elements from the lists of lists : [[1, 2], [7, 8]]

解释

在上述方法中,我们使用了两个循环遍历列表列表,对于每个子列表,我们检查它是否存在于另一个列表中,如果不存在,则将其添加到 uncommon_elements 列表中。

方法 2:使用列表推导式

在这种方法中,我们将使用列表推导式技术,使用该技术我们可以过滤列表列表中的元素。我们将使用嵌套循环遍历两个列表的子列表,并将找到不常见的元素。

示例

list1 = [[1, 2], [3, 4], [5, 6]]
list2 = [[3, 4], [5, 6], [7, 8]]
uncommon_elements = [
   element for sublist in list1 + list2
   for element in sublist
   if (sublist not in list1) or (sublist not in list2)
]

print("list1:", list1)
print("list2:", list2)
print("Uncommon elements from the lists of lists :",uncommon_elements)

输出

list1: [[1, 2], [3, 4], [5, 6]] 
list2: [[3, 4], [5, 6], [7, 8]] 
Uncommon elements from the lists of lists : [1, 2, 7, 8]

解释

在上面的示例中,我们将首先将两个列表连接到一个列表中,然后我们使用列表推导式遍历每个子列表,并检查它是否存在于 list1 或 list2 中,但不在两者中。然后我们从列表中收集不常见的元素。

方法 3:使用集合差

在这种方法中,我们将使用集合的概念,并将计算两个集合之间的差来查找不常见的列表元素。

示例

list1 = [[1, 2], [3, 4], [5, 6]]
list2 = [[3, 4], [5, 6], [7, 8]]

set1 = set(map(tuple, list1))
set2 = set(map(tuple, list2))
uncommon_elements = list(map(list, set1 - set2)) + list(map(list, set2 - set1))

print("list1:", list1)
print("list2:", list2)
print("Uncommon elements from the lists of lists :",uncommon_elements)

输出

list1: [[1, 2], [3, 4], [5, 6]] 
list2: [[3, 4], [5, 6], [7, 8]] 
Uncommon elements from the lists of lists : [[1, 2], [7, 8]]

解释

在上面的示例中,我们计算了 set1 和 set2 之间的差,反之亦然。然后我们收集存在于任何集合中但在另一个集合中是不常见元素的元素。

方法 4:使用 Pandas DataFrame

在这种方法中,我们将使用 Pandas DataFrame 库的概念,该库非常流行用于数据操作。我们将使用 Pandas DataFrame 提供的 DataFrame 对象来查找来自两个不同列表的列表列表中的不常见元素。

示例

import pandas as pd
list1 = [[1, 2], [3, 4], [5, 6]]
list2 = [[3, 4], [5, 6], [7, 8]]

list1 = [[1, 2], [3, 4], [5, 6]]
list2 = [[3, 4], [5, 6], [7, 8]]
df1 = pd.DataFrame(list1)
df2 = pd.DataFrame(list2)
uncommon_elements = pd.concat([df1, df2]).drop_duplicates(keep=False).values.tolist()

print("list1:", list1)
print("list2:", list2)
print("Uncommon elements from the lists of lists :",uncommon_elements)

输出

list1: [[1, 2], [3, 4], [5, 6]] 
list2: [[3, 4], [5, 6], [7, 8]] 
Uncommon elements from the lists of lists : [[1, 2], [7, 8]]

解释

在上面的示例中,我们从 list1 和 list2 创建了两个 Pandas DataFrame。然后我们连接这两个 DataFrame,并删除 DataFrame 的重复行,这将给我们结果,即只有不常见的元素。

方法 5:使用集合交集和差集

在这种方法中,我们将使用集合交集和差集的概念来查找列表列表中的不常见元素。

示例

list1 = [[1, 2], [3, 4], [5, 6]]
list2 = [[3, 4], [5, 6], [7, 8]]

set1 = set(map(tuple, list1))
set2 = set(map(tuple, list2))
uncommon_elements = list(map(list, (set1 - set2).union(set2 - set1)))

print("list1:", list1)
print("list2:", list2)
print("Uncommon elements from the lists of lists :", uncommon_elements)

输出

list1: [[1, 2], [3, 4], [5, 6]] 
list2: [[3, 4], [5, 6], [7, 8]] 
Uncommon elements from the lists of lists : [[1, 2], [7, 8]]

解释

在上面的示例中,我们将 list1 和 list2 转换为元组集。然后我们计算了这些集合之间的差。并集操作组合了差异,为我们提供了元组形式的不常见元素,然后将其转换回列表。

方法 6:使用集合和对称差

在这种方法中,我们将使用集合和对称差的概念来查找列表列表中的不常见元素。

示例

list1 = [[1, 2], [3, 4], [5, 6]]
list2 = [[3, 4], [5, 6], [7, 8]]

set1 = set(map(tuple, list1))
set2 = set(map(tuple, list2))
uncommon_elements = list(map(list, set1.symmetric_difference(set2)))

print("list1:", list1)
print("list2:", list2)
print("Uncommon elements from the lists of lists :",uncommon_elements)

输出

list1: [[1, 2], [3, 4], [5, 6]] 
list2: [[3, 4], [5, 6], [7, 8]] 
Uncommon elements from the lists of lists : [[1, 2], [7, 8]]

解释

在上面的示例中,我们首先将 list1 和 list2 的子列表转换为元组集。我们将使用这两个集合之间的对称差,这将为我们提供元组形式的不常见元素的结果。然后我们将这些元组转换回列表以获取最终的 uncommon_elements 列表。

结论

因此,我们了解到,从两个不同列表中查找列表列表中的不常见元素是数据分析和操作中非常关键的任务。我们看到了不同的方法,包括基本方法、Pandas、列表和对称差,使用这些方法我们可以计算列表列表中的不常见元素。您可以使用最适合您需求的任何方法,但了解知识对于学习目的来说是好的。

更新于: 2023年10月6日

503 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告