[英]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。
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执行相同的操作。
现在我们有了sList1
和sList2
我们想消除两者中的任何重复项,因为我们可以取sList1
和sList2
之差, 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.