我有一个功能,可以捕获一些XML文件的标签结构。因此,使用for循环,最终得到变量lt,它是标签列表的列表。在一个循环中,我将拥有:
lt = [['MLB', 'OF', '25'], ['NBA', 'PG', '26']]
下一个循环类似于:
lt = [['MLB', 'OF', '25'], ['NBA', 'PG', 'Lakers' '26']]
由于for循环,我的变量名保持静态。有什么方法可以比较列表而不是列表,并说列表是否彼此不同?
答案 0 :(得分:0)
...只是保留它作为参考
last = None
for ...:
lt = ..
if last is not None and lt != last:
print "different line"
last = lt
答案 1 :(得分:0)
这个问题尚不清楚,但是我想我知道您要尝试做的事情:您想将一个循环步骤中的值与上一个步骤进行比较?如果是这样,请使用某种方式引用循环的键将其值捕获到dict中:
tags_by_file = {}
for file in file_list:
tags = get_tags(file)
tags_by_file[file] = tags
...
之后,您可以引用任何先前文件的标签。
答案 2 :(得分:0)
要获取列表中相同的元素:
list_1 = [['MLB', 'OF', '25'], ['NBA', 'PG', '26']]
list_2 = [['MLB', 'OF', '25'], ['NBA', 'PG', 'Lakers' '26'], []]
list_3 = []
for element in list_1:
if (element in list_2):
list_3.append(element)
print(list_3)
要查看它们是否不同,可以将合并列表的长度与原始列表的长度进行比较。因此,只需添加
len(list_3) == len(list_1) and (len(list_3) == len(list_2)
答案 3 :(得分:0)
您可以照常直接比较列表:
>>> l1 = [['MLB', 'OF', '25'], ['NBA', 'PG', '26']]
>>> l1 == [['MLB', 'OF', '25'], ['NBA', 'PG', '26']]
True
>>> l1 == [['MLB', 'OF', '25'], ['NBA', 'PG', '27']]
False
但是,如果您对“内部”列表集的比较感兴趣并且不依赖于它们的顺序,只需比较排序后的列表即可:
>>> l1 = [['MLB', 'OF', '25'], ['NBA', 'PG', '26']]
>>> l2 = [['NBA', 'PG', '26'], ['MLB', 'OF', '25']]
>>> l1 == l2
False
>>> sorted(l1) == sorted(l2)
True
如果您需要比较来自不同迭代的列表,请将每个新列表附加到循环外部的某个常规列表中,以便先前的列表可以通过相应迭代的索引进行访问。像这样:
results = []
for i, item in enumerate(items):
# your logic from the loop, that gives us new_list
results.append(new_list)
# now we can compare it with one of the previous results
identity = results[i] == results[i - 1] if i > 0 else False