PythonPython用Python做生信

取两个数据集的交集|自学生信Python(第十四天)

2019-11-26  本文已影响0人  天明豆豆

取两个数据集的交集

如果希望解决两个数集的交集: 保留数据集 A 中也存在于数据集 B 的项,那么通过用简单的 for. . . if 结合对 Python 列表进行操作就可以实现。

写在前面的话:
本人是一枚生物学的学生,由于对生物信息学特别感兴趣,于是想自学生物信息学(新手莫怪)
。了解到生物信息学要有编程基础,尤其是要会一门编程语言,例如:R语言、Python、Perl等,还要熟悉Linux系统,作为生信小白,听说Python挺简单的,于是就自学了Python,花了两天时间了解了Python的基础语法后,今天想做个练习题试试手(实践是检验真理的唯一标准)。下面是练习题:(试题来源:《PYTHON生物信息学数据管理》)

如果希望解决两个数集的交集: 既,保留数据集 A 中也存在于数据集 B 的项,那么通过用简单的 for. . . if 循环判断就能实现,下面的例子考虑了两个整数列表 ,并将两个列表共有的元素写到一个新的列表(a_and_b) 中:
代码如下:

合并两个数集①

#合并两个数集①
data_a = [1,2,3,4,5,6]
data_b = [1,5,7,8,9]
a_and_b = []
for num in data_a:
    if num in data_b:
        a_and_b.append(num)
print(a_and_b)

使用这种 for 循环和 if 语句的组合保留了 data_a 中元素的顺序,使输出的结果是按先后顺序输出的。
如果顺序并不相关,则可以通过集合数据类型使代码更短:

合并两个数集②

#合并两个数集②
data_a = set([1,2,3,4,5,6])
data_b = set([1,5,7,8,9])
a_and_b = data_a.intersection(data_b)
print(a_and_b)

通过这种思想,可以扩展到取两个文本中相同的项,还可以进一步扩展到通过文本A的ID提取文本B中文本A中ID的序列,这是生物信息学中常见的知道ID提取序列的方法。

日常结尾:
虽然这是个小小的计算程序,但对于初学者的我来说每一次对原代码的升级改造,哪怕是读懂后的注释都感觉是一次进步提升,总之代码虽小,动手最重要!希望更多学习Python的爱好者不要像我一样眼高手低,学习编程就是要,思考,敲码,思考,敲码,敲码,再敲码!

上一篇下一篇

猜你喜欢

热点阅读