我正在编写一个程序,它通过 add_to_file 函数创建一个文件,然后另一个程序将该文件作为输入。
该文件有 4 列:名称、开始位置、描述、结束位置
该程序应该做的是将文件读入一个numpy数组并通过本质上创建一个数组来创建合理的“运动序列”,该数组将在运动中至少有一个结束位置与至少一个相同接下来的运动的起始位置
def make_sequence(size,array):
count = 0
sequence = [array[0]]
result = [array[0,0]]
for row in array[1:size]:
if row[1] == sequence[count][3]:
sequence.append(row)
result.append(row[0])
count += 1
else:
pass
return result
这是在做什么,它是从文件中获取数组并创建一个新数组(结果),这样新数组只是动作的名称,但只有彼此相邻的动作才会流动,因为它们的起始位置是准确的与前一动作的结束位置相同!这是我的问题:
有些动作可以在多种位置开始和结束,而我所写的每个动作只能取 1 个开始和 1 个结束位置。
问题:我怎样才能做到这一点,如果位置值的字符串是逗号分隔值,即(a,b,c,d),它将能够遍历它们并从头到尾比较它们,以便函数会返回所有流动的运动吗?
编辑:
这是我希望我的代码能够执行的操作的示例
输入:
row_1 = ["Name1", "1,3,4,5", "Description", "2"]
row_2 = ["Name2", "5,3", "Description", "4"]
row_3 = ["Name3", "2", "Description", "1"]
row_4 = ["Name4", "1", "Description", "7,3"]
row_5 = ["Name5", "3", "Description", "5,9,4"]
row_6 = ["Name6", "2", "Description", "7"]
row_7 = ["Name7", "7", "Description", "2"]
row_8 = ["Name8", "1", "Description", "4"]
row_9 = ["Name9", "4", "Description", "2"]
data = np.array((column_index,row_1,row_2,row_3,row_4,row_5,row_6,row_7,row_8,row_9))
print make_sequence(7,array)
输出:
[Name1,Name3,Name4,Name5]
你得到这个输出是因为它自动从 row_1 开始,它的名称为:“Name1”,然后它读取下一行,如果该行的起始位置与附加到上一行的结束位置相同正确的序列,它的名称将被附加到结果数组中。
它只对前 7 行执行此操作,因为输入的大小为 7