繁体   English   中英

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

[英]Python checking if string in list to list

我很难理解“ 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。

为此使用Set。

set(list2)-set(list1)

用python 设置检查

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

您可以遍历list2的元素并进行打印(如果它们不在list1

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

对于循环

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现在是set类型,并将元素存储在list1中。 可以对list2执行相同的操作。

现在我们有了sList1sList2我们想消除两者中的任何重复项,因为我们可以取sList1sList2之差, sList1 print(sList2-sList1)

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

或者,如果您想使用for循环(请注意,这对于大型列表而言效率不高):

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

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

“设置”-解决方案可能对您来说太高级了。

如此简单,您将:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM