我很难理解“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。
答案 0 :(得分:5)
答案 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循环允许您编写一段代码,并为列表中的每个项重复该代码。
您可以通过执行以下操作迭代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也可以这样做。
既然我们已经sList1
和sList2
,我们希望消除两者中的任何重复项,因为我们可以区分sList1
和sList2
并打印出来如下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);
}
}
}