【问题标题】:How to use the .insert method to add values to a list如何使用 .insert 方法向列表添加值
【发布时间】:2020-06-16 12:08:28
【问题描述】:

我一直在研究一种涉及遗传密码的算法。我首先将所有 4 个遗传碱基 A、C、T、G 与一个列表相关联。 A 是 1,0,0,0。 C 是 0,1,0,0。 T 为 0,0,1,0,G 为 0,0,0,1。有两种不同的遗传密码,一种是原始密码,另一种是基因突变的密码。该算法将根据两个遗传密码之间的差异得出给出的数据的结论。但首先,我需要对数据进行某种预处理,然后才能对算法做出结论。

我正在尝试做的是,当代码在原始代码中看到一个字母时,它应该在复制版本中查看相同位置的字母。如果您查看下面的代码,一个示例将查看 each(A & C) 中的第一个字母或 each(T & T) 中的第二个字母是否相同。如果是,则列表不应更改。例如,在第 2 位,T & T 是相同的。这意味着列表将保持不变并且是:0,0,1,0。但是,如果它不一样,例如 A 和 C,那么算法应该将它们重叠并添加两个字母。所以代码是 1,0,1,0。

到目前为止,代码是这样的:

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,T,A]
copy = [C,T,T,A,T,A,A]
final = original # In case you were wondering the purpose of this line is to make a new variable to hold the end result.
for i,v in enumerate(original):
    if v == copy[i]:
      print(v)
    else:
      print(final.insert(i,copy[i])) 

当我运行它时,我得到“列表索引超出范围”,我尝试使用它并删除 final = original 并且由于某种原因它可以工作,但是它没有在应该的时候组合两个不同的字母,它只是说没有。

我对编程很陌生,所以这可能是一个简单的问题,但我想知道如何才能真正从两个不同的列表中制作两个字母,如果它们不同则重叠。

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    列表在 python 中是“可变的”,在您的代码中 final = original 您的最终名称是对名为“original”的列表的新“引用”,但不是新列表以及使用对基础列表所做的任何更改任何一个名称都会影响两者(或者更确切地说,使用两个列表名称都可以看到,但更改只在一个地方)。可变对象的使用通常是程序员痛苦的根源。您可以使用final = original.copy() 进行复制并安全地对其进行操作。请参阅Are Python Lists mutable? 的 SO 上的其他讨论。起步时容易绊倒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多