Python列表减法

12 浏览
0 Comments

Python列表减法

这是一个练习例子:

编写一个函数(list1, list2),它接受两个列表作为参数,并返回一个从list1中删除在list2中可以找到的元素后的列表。

为什么这个函数返回[1, 3, 4]而不是我认为的[4]?我认为这与list1.remove()有关。我猜这是一些很明显的东西,但我看不出来。

它在以下示例中有效:

subtractList(['a', 'b', 'c', 'd'], ['x', 'y', 'z']) =
    ['a', 'b', 'c', 'd']
subtractList([1,2,3,4,5], [2, 4]) =
    [1, 3, 5]

但在这个示例中失败了:

subtractList(range(5), range(4))

我还注意到它只从列表中删除偶数。

代码如下:

def subtractList(list1,list2):
    list1 = list(list1)
    list2 = list(list2)
    for i in list1:
        if i in list2:
            list1.remove(i)
    return list1

我已经用以下代码解决了这个问题:

def subtractList(list1,list2):
    new_list = []
    list1 = list(list1)
    list2 = list(list2)
    for i in list1:
        if i not in list2:
            new_list.append(i)
    return new_list

0
0 Comments

Python中的列表减法问题是由于在迭代列表时更改列表内容而导致的。解决方法可以是使用第二种解决方案,或者可以尝试使用列表推导式。在这种情况下,可以使用以下代码解决问题:

new_list = [num for num in list1 if num not in list2]

值得一提的是,对于初学Python的人来说,我认为你遇到的错误原因并不明显。 🙂

0
0 Comments

Python中的列表支持减法操作,即通过减去另一个列表中的元素来实现两个列表的差集。然而,在进行列表减法操作时可能会出现一些问题,本文将介绍这个问题的原因以及解决方法。

在上述代码中,我们定义了一个名为subtract_list的函数,该函数接受两个参数l1和l2,并返回一个列表,该列表包含在l1中但不在l2中的元素。该函数使用了Python中的集合(set)来实现列表的减法操作。具体而言,我们首先将l1和l2转换为集合(set)类型,然后使用集合的减法操作符“-”来计算两个集合的差集,最后将结果转换为列表类型并返回。

然而,需要注意的是,使用集合的减法操作符会导致列表的顺序发生改变。这是因为集合是无序的,它不保留元素的顺序。因此,在进行列表减法操作后,返回的结果列表的顺序可能与原始列表l1的顺序不同。

为了解决这个问题,我们可以对结果列表进行排序,以恢复原始列表的顺序。在上述代码中,我们使用了sorted函数来对结果列表进行排序,该函数会返回一个新的已排序的列表。通过将结果列表传递给sorted函数,我们可以确保返回的列表与原始列表l1的顺序相同。

我们介绍了Python中列表减法操作的问题以及解决方法。通过使用集合来计算差集,并对结果列表进行排序,我们可以实现列表减法操作并保持原始列表的顺序。这种方法能够帮助我们在处理列表差集时避免可能的顺序改变。

0