如何解决PYTHON:删除列表中也在另一个列表中的元素
我想删除列表 ORF300 中的元素,这些元素也在列表 ORF500 中。
所以,我只想保留第一个列表中不在第二个列表中的元素。
两个列表都包含大量 DNA 序列。例如 ORF300 包含:["ATTCG","GCTATCT","CGGTATTA"] 而 ORF500 包含 ["GCGGGCATTCGTTG","ATTTTTTTTGCTG","GGGCGGTATTATCGTG "]
所以,在这里我想从 ORF300 中删除 ATTCG
和 CGGTATTA
并保留 GCTATCT
,因为它不在 ORF500 列表中,但是当我启动脚本时:
i=0
for element in orf300[:]:
for elem in orf500[:]:
if element in elem:
print(">ORF:_"+str(i))
print(element)
orf300.remove(element)
i+=1
我收到此错误:
Traceback (most recent call last):
File "ScriptCDS.py",line 64,in <module>
orf300.remove(element)
ValueError: list.remove(x): x not in list
感谢您的回答。
解决方法
可以通过简单的 list comprehension
和 all
完成:
ORF300 = ["ATTCG","GCTATCT","CGGTATTA"]
ORF500 = ["GCGGGCATTCGTTG","ATTTTTTTTGCTG","GGGCGGTATTATCGTG"]
ORF300 = [i for i in ORF300 if all(i not in j for j in ORF500)]
输出:
['GCTATCT']
,
您应该在删除元素后使用 continue
:
orf300 = ["ATTCG","CGGTATTA"]
orf500 = ["GCGGGCATTCGTTG","GGGCGGTATTATCGTG"]
for element in orf300[:]:
for elem in orf500[:]:
if element in elem:
orf300.remove(element)
continue
orf300
>>>
['GCTATCT']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。