def comp_tuple_file(tuple_file1, tuple_file2):
	for i in tuple_file1:
		if i in tuple_file2:
			tuple_file1.remove(i)
			tuple_file2.remove(i)


if __name__ == "__main__":
	t1 = [(1, "1"), (2, "2"), (3, "3")]
	t2 = [(1, "1"), (3, "3"), (2, "2"), (4, "2")]
	comp_tuple_file(t1, t2)
	print(t1)
	print(t2)

错在哪里?

头一次循环,i=(1,“1”)被正确移除了。但是接下来,i=(3,“3”)?

这个叠代器的行为很有意思哦,貌似叠代器内存储的是集合的索引。

def comp_tuple_file(tuple_file1, tuple_file2):
	collection = tuple_file1[:]
	for i in collection:
		if i in tuple_file2:
			tuple_file1.remove(i)
			tuple_file2.remove(i)


if __name__ == "__main__":
	t1 = [(1, "1"), (2, "2"), (3, "3")]
	t2 = [(1, "1"), (3, "3"), (2, "2"), (4, "2")]
	comp_tuple_file(t1, t2)
	print(t1)
	print(t2)

这才是正确的代码。