Python检查列表中的字符串是否列出

时间:2017-07-06 08:43:45

标签: python python-3.x

我很难理解“for”功能是如何工作的。

我想创建一个脚本,只输出list2中不在list1中的字符串。例如:

list1 = ["link1.com", "link2.com", "link3.com"]
list2 = ["link2.com", "link123.com"]

for list2 in list1:
    print(list2)

{我的意图是打印的代码:

link123.com

但是它打印了list1}

中的字符串

我无法让它发挥作用。非常感谢帮助。我顺便使用python 3。

5 个答案:

答案 0 :(得分:5)

使用Set for this。

set(list2)-set(list1)

检查python Rabbits

答案 1 :(得分:3)

循环for list2 in list1实际上是一个赋值:在每次迭代中,变量list2获取list1中下一个项的值 - 这就是为什么只打印list1的元素的原因。

您可以迭代list2的元素并打印,如果它们不在list1中:

for element in list2:
    if element not in list1:
        print(element)

答案 2 :(得分:2)

For循环

For循环允许您多次重复一段代码。您可以轻松地为列表中的每个项目多次编写条件语句和打印语句。 for循环允许您编写一段代码,并为列表中的每个项重复该代码。

您可以通过执行以下操作迭代list2中的项目

for item in list2:
    print(item)

item是一个任意变量名,它保存我们所在的当前项的值,in后面是我们想要迭代的列表。 print(item)是我们要为列表中的每个元素重复的代码段。

这样做是通过list2中的每个项目并打印出来的,但这不是我们想要的。我们要检查以确保该项目不在list1中。这可以通过条件声明来实现。

if item not in list1:
    print(item)

现在我们可以将两段代码加在一起。

for item in list2:
    if item not in list1:
        print(item)

项目的集合是无序的,其中每个项目都是唯一的。这些集合与我们在数学中遇到的集合相同,因此我们可以对它们执行数学集合操作。

要从项目列表转到集合,我们使用sList1 = set(list1) sList1现在是类型集并将元素存储在list1中。 list2也可以这样做。

既然我们已经sList1sList2,我们希望消除两者中的任何重复项,因为我们可以区分sList1sList2并打印出来如下print(sList2-sList1)

我们可以一步完成所有这些工作。 print( set(list2) - set(list1) )

答案 3 :(得分:1)

或者如果你想使用for循环(注意这对于大型列表来说非常有效):

for string in list2:
    if not string in list1:
        print (string)

答案 4 :(得分:1)

python将检查这些项是否在list1中的语义不是for-each-loop的一部分。

'set' - 解决方案对您来说可能太先进了。

你会这么直截了当:

var UsersViewModel = function () {
    var self = this;
    self.selectedItem = ko.observable();
    ...

    self.setSelectedItems = function (selectedUser) {
    if (selectedUser) {
        self.selectedItem(selectedUser);
    }
}
}