首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在列表中编辑列表的某一部分

在列表中编辑列表的某一部分
EN

Stack Overflow用户
提问于 2020-06-19 01:33:39
回答 2查看 35关注 0票数 1

我对python比较陌生,我一直在研究一种涉及遗传代码的算法。我首先把所有的4个遗传基础,A,C,T,G与一个列表联系起来。A为1 00.0。C为0,1,0。T是0,0,1,0,G是0,0,0,1。有两个不同的遗传密码,一个是原始的,另一个是遗传变异的。该算法将根据两种遗传密码的不同,得出所给数据的结论。但首先,我需要对数据进行预处理,然后才能对算法做出结论。

代码语言:javascript
复制
A = [1, 0, 0, 0]
C = [0, 1, 0, 0]
T = [0, 0, 1, 0]
G = [0, 0, 0, 1]
original = [A, T, T, G, C]
copy = [C, T, T, A, T]

final = original[:] 
for i, v in enumerate(original):
    if v == copy[i]: 
       print(v)
    elif v != copy[i]: 
        v.insert(0, ("add"))  
        print(v)

这是输出:

我试着制作算法,这样算法就可以逐项比较原始和复制的遗传代码。它检查每个字母是否相等。对于第一个问题,A和C是不相等的。如果不相等,我希望算法输出1,1,0,0。这两个字母基本上是重叠的。如果算法看到代码是相同的,例如,第二个代码,T& T,它应该保持与它所做的相同。

在上面的图像中,它说要添加,这些是算法重叠和应该改变的线条。我的问题是,当算法检测到两个不同的字母时,如何才能将两个单独的列表重叠在一起呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-19 01:44:49

您应该看看逻辑运算符。你所做的是对你的碱基对进行“或”操作。如果使用numpy,则可以将其向量化,并大大加快处理速度:

代码语言:javascript
复制
original_array = np.array(original)
copy_array = np.array(copy)
oringal_array | copy_array

结果:

代码语言:javascript
复制
array([[1, 1, 0, 0],
       [0, 0, 1, 0],
       [0, 0, 1, 0],
       [1, 0, 0, 1],
       [0, 1, 1, 0]])

如果不想使用numpy,仍然可以在列表中使用逻辑或|

代码语言:javascript
复制
final = []
for o, c in zip(original, copy):
    final.append([x | y for x, y in zip(o, c)])

代码语言:javascript
复制
final = [[x | y for x, y in zip(o, c)] for o, c in zip(original, copy)]
票数 3
EN

Stack Overflow用户

发布于 2020-06-19 01:46:28

试试这个:

代码语言:javascript
复制
import numpy as np

A = [1, 0, 0, 0]
C = [0, 1, 0, 0]
T = [0, 0, 1, 0]
G = [0, 0, 0, 1]
original = [A, T, T, G, C]
copy = [C, T, T, A, T]

x = [1 if 1 in j else 0 for i, v in enumerate(original) for j in zip(v, copy[i])]

new = np.array_split(x, len(original))
print(new)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62461913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档