在多行上输出,我需要将每一行分配给它自己的变量
Outputting on multiple lines and I need each line to be assigned to its own variable
下面的代码采用 dna_string2 并在 dna_string1 中匹配它。然后它输出一个或多个匹配项的索引位置,然后将 return 值递增 1 以模拟“自我计数”。我面临的问题是我需要将 2、4 和 10 的输出值分配给它们自己的变量。我无法弄清楚如何分离输出以便我可以分配给各个变量。我试过使用 split()。我试过先写入文件。我觉得我已经尝试了几乎所有方法来分离输出。非常感谢任何专家的帮助。
定义函数
def get_most_likely_ancestor(dna_string1, dna_string2):
i = 0
g = len(dna_string2)
for i in range (len(dna_string1)):
i += 1
g += 1
if (dna_string1[i:g]) == (dna_string2):
locations = dna_string1.index(dna_string2, i)
locations += 1
return locations
函数输入
dna_string1 = "GATATATGCATATACTT"
dna_string2 = "ATAT"
函数输出(如图所示)
2
4
10
如果您知道函数 return 有多少个值,您可以将每个值分配给一个单独的变量。
first, second, third = get_most_likely_ancestor(dna_string1, dna_string2)
赋值的 right-hand 端需要是一个序列,可以将其解压缩为 left-hand 端的表达式数量。
如果您无法预测该函数将 return 取多少值,它是大自然告诉您这是个坏主意的多种方式之一。实际上,将所有值都放在一个列表变量中会更好(或者,根据您的用例,可能是字典或更复杂的数据结构,可能封装在 class 中)。
函数需要更加灵活以允许任意数量的匹配。
函数不应负责结果的呈现。
因此,让我们只 return 一个列表并在调用者中处理演示文稿。例如:-
def get_most_likely_ancestor(s1, s2):
offset = 0
olist = []
while (i := s1[offset:].find(s2)) >= 0:
olist.append(offset := offset + i + 1)
return olist
for pos in get_most_likely_ancestor('GATATATGCATATACTT', 'ATAT'):
print(pos)
输出:
2
4
10
我想这对您的项目有帮助:
def get_most_likely_ancestor(dna_string1, dna_string2):
i = 0
g = len(dna_string2)
global list_plain
list_plain = []
for i in range (len(dna_string1)):
i += 1
g += 1
if (dna_string1[i:g]) == (dna_string2):
locations = dna_string1.index(dna_string2, i)
locations += 1
list_plain.append(locations)
dna_string1 = "GATATATGCATATACTT"
dna_string2 = "ATAT"
get_most_likely_ancestor(dna_string1,dna_string2)
print(list_plain)
我同意@tripleee。对于更大或未知的数据,将它们封装在 class 中是一个更好的主意。
下面的代码采用 dna_string2 并在 dna_string1 中匹配它。然后它输出一个或多个匹配项的索引位置,然后将 return 值递增 1 以模拟“自我计数”。我面临的问题是我需要将 2、4 和 10 的输出值分配给它们自己的变量。我无法弄清楚如何分离输出以便我可以分配给各个变量。我试过使用 split()。我试过先写入文件。我觉得我已经尝试了几乎所有方法来分离输出。非常感谢任何专家的帮助。
定义函数
def get_most_likely_ancestor(dna_string1, dna_string2):
i = 0
g = len(dna_string2)
for i in range (len(dna_string1)):
i += 1
g += 1
if (dna_string1[i:g]) == (dna_string2):
locations = dna_string1.index(dna_string2, i)
locations += 1
return locations
函数输入
dna_string1 = "GATATATGCATATACTT"
dna_string2 = "ATAT"
函数输出(如图所示)
2
4
10
如果您知道函数 return 有多少个值,您可以将每个值分配给一个单独的变量。
first, second, third = get_most_likely_ancestor(dna_string1, dna_string2)
赋值的 right-hand 端需要是一个序列,可以将其解压缩为 left-hand 端的表达式数量。
如果您无法预测该函数将 return 取多少值,它是大自然告诉您这是个坏主意的多种方式之一。实际上,将所有值都放在一个列表变量中会更好(或者,根据您的用例,可能是字典或更复杂的数据结构,可能封装在 class 中)。
函数需要更加灵活以允许任意数量的匹配。
函数不应负责结果的呈现。
因此,让我们只 return 一个列表并在调用者中处理演示文稿。例如:-
def get_most_likely_ancestor(s1, s2):
offset = 0
olist = []
while (i := s1[offset:].find(s2)) >= 0:
olist.append(offset := offset + i + 1)
return olist
for pos in get_most_likely_ancestor('GATATATGCATATACTT', 'ATAT'):
print(pos)
输出:
2
4
10
我想这对您的项目有帮助:
def get_most_likely_ancestor(dna_string1, dna_string2):
i = 0
g = len(dna_string2)
global list_plain
list_plain = []
for i in range (len(dna_string1)):
i += 1
g += 1
if (dna_string1[i:g]) == (dna_string2):
locations = dna_string1.index(dna_string2, i)
locations += 1
list_plain.append(locations)
dna_string1 = "GATATATGCATATACTT"
dna_string2 = "ATAT"
get_most_likely_ancestor(dna_string1,dna_string2)
print(list_plain)
我同意@tripleee。对于更大或未知的数据,将它们封装在 class 中是一个更好的主意。