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

pythonserver side programmingprogramming

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

示例

让我们使用一个例子来理解 -

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

输出

[1, 2, 7, 8]

因此,您可以观察到我们给出了两个列表列表,我们将比较这两个列表并检查哪个元素不存在于另一个列表中,因此 list1 中的元素 [1,2] 不存在于 list2 中,元素 [7,8] 不存在于 list2 中list2 不存在于 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)

输出

list1: [[1, 2], [3, 4], [5, 6]]
list2: [[3, 4], [5, 6], [7, 8]]
列表的列表中不常见的元素 : [[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)

输出

list1: [[1, 2], [3, 4], [5, 6]]
list2: [[3, 4], [5, 6], [7, 8]]
列表列表中的不常见元素:[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)

输出

list1: [[1, 2], [3, 4], [5, 6]] 
list2: [[3, 4], [5, 6], [7, 8]] 
列表列表中的不常见元素:[[1, 2], [7, 8]]

解释

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

方法 4:使用 Pandas DataFrame

在此方法中,我们将使用在数据处理中非常流行的 pandas dataframe 库的概念。我们将使用 pandas 数据框提供的数据框对象从两个不同的列表中查找列表列表中不常见的元素。

示例

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)

输出

list1: [[1, 2], [3, 4], [5, 6]]
list2: [[3, 4], [5, 6], [7, 8]]
列表列表中不常见的元素:[[1, 2], [7, 8]]

解释

在上面的例子中,我们从 list1 和 list2 创建了两个 pandas DataFrames。然后我们连接两个数据框,并删除数据框的重复行,这样我们得到的结果只有不常见的元素。

方法 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)

输出

list1: [[1, 2], [3, 4], [5, 6]] 
list2: [[3, 4], [5, 6], [7, 8]] 
列表列表中不常见的元素:[[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)

输出

list1: [[1, 2], [3, 4], [5, 6]]
list2: [[3, 4], [5, 6], [7, 8]]
列表列表中的不常见元素 : [[1, 2], [7, 8]]

解释

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

结论

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


相关文章


有用资源