如何在python中将一个列表的一系列元素添加到另一个列表中



我有一个列表,比如my_first_list = ["A", "M", "F", "T", "_", "D"]。我想用这些元素创建另一个列表:M、F、T,所以我的第二个列表是my_second_list = ["M", "F", "T"]

这是我的代码,但它不起作用。对不起,我是个初学者。

def createProtein(seq):
my_list = []
for i in seq:
if i == "M":
my_list.append(i)
if i != "_":
for j in range(len(my_list)):
my_list[j] += i
return my_list

rframe = ["A", "M", "F", "T", "_", "D"]
print(createProtein(rframe))```

您可以使用切片从列表中提取一系列元素:

my_first_list = ["A", "M", "F", "T", "_", "D"]
my_second_list = my_first_list[1:4]

这将给出:

['M', 'F', 'T']

如果您不知道索引,但想使用'M''_'作为边界,可以使用:

ix1 = my_first_list.index('M')
ix2 = my_first_list.index('_')
my_second_list = my_first_list[ix1:ix2]

您在代码中犯了一个巨大的错误。

def createProtein(seq):
my_list = []
for i in seq:
if i == "M":
my_list.append(i)
if i != "_":
for j in range(len(my_list)):
my_list[j] += i
print(my_list)
return my_list

rframe = ["A", "M", "F", "T", "_", "D"]
createProtein(rframe)
# print(createProtein(rframe))

输出

['MM']
['MM']

i == 'M'时,my_list将添加"M"。由于j循环,它将再次添加一个"M"。在下一次迭代中,i将为"F",因此i == 'M'将为false,此后将不执行任何代码。因此,my_list最终将是"MM"。

您想要的代码是

lis = ['A', 'M', 'F', 'T', '_', 'D']
def index(lis, c):
for i in range(len(lis)):
if lis[i] == c:
return i
def extract(lis, start, end):
return lis[start : end]
print(extract(lis, index(lis, 'M'), index(lis, '_')))

现在,您可以通过将开始和结束字符传递给index(),然后再传递给extract()来提取任何子列表输出[MM','F','T']

最新更新