我试图获取一个列表并将其与文本文件进行比较,从文本文件中显示的列表中删除元素。在
我的密码是:
baselist = open("testfile.txt", 'r')
twolist = ["one","two","three","four","five"]
for y in baselist:
for x in range(0,len(twolist)):
print("Working %s vs %s") % (twolist[x], y)
if twolist[x] == y:
print("Match!")
remove.twolist[x]
baselist.close()
当我运行这个程序时,我可以在输出中看到它正在比较“一”与“一”,等等,显然问题出在if twolist[x] == y:
但就我的一生而言,我无法让它发挥作用。我读了又读,又搜又搜,但很明显我遗漏了一些东西。有人能给我指出正确的方向吗?在
您错过了
rstrip()
。在不要在遍历列表时修改它。在
更好地使用列表理解,并使用集合使其更快:
^{pr2}$打开文件通常用
with
从文件中读取时,新行字符不会被删除;因此,例如,
'two\n' != 'two'
并且比较测试失败。使用.strip()或.rstrip()删除空格,包括后面的换行符for index in range(len(mylist))
通常是一个不好的符号;最好将列表作为for value in mylist
操作,并将其过滤为[value for value in mylist if test(value)]
您的第一个
print
语句缩进错误您的
remove
语法是错误的;应该是twolist.remove(x)
,请注意,这只会删除x的第一个出现您的算法是O(mn),其中m是
baselist
中的行数,n是twolist
中的行数;稍微小心,它可以是O(m+n)。如果原始顺序很重要
否则
^{pr2}$相关问题 更多 >
编程相关推荐