【发布时间】:2016-09-15 23:06:39
【问题描述】:
我有一个由嵌套列表组成的列表,每个嵌套列表包含两个值 - 一个浮点值(文件创建日期)和一个字符串(文件名)。
例如:
n_List = [[201609070736L, 'GOPR5478.MP4'], [201609070753L, 'GP015478.MP4'],[201609070811L, 'GP025478.MP4']]
嵌套列表已按升序排列(创建日期)。我正在尝试使用 While 循环来计算每个顺序浮点值之间的差异。
例如:201609070753 - 201609070736 = 17
目标是使用时差值作为对文件进行分组的基础。
我遇到的问题是,当计数达到len(n_List) 的最后一个值时,它会抛出IndexError,因为count+1 超出范围。
IndexError: list index out of range
我不知道如何解决这个错误。无论我尝试什么,当它到达列表中的最后一个值时,计数总是在范围内。
这是我一直在使用的 While 循环。
count = 0
while count <= len(n_List):
full_path = source_folder + "/" + n_List[count][1]
time_dif = n_List[count+1][0] - n_List[count][0]
if time_dif < 100:
f_List.write(full_path + "\n")
count = count + 1
else:
f_List.write(full_path + "\n")
f_List.close()
f_List = open(source_folder + 'GoPro' + '_' + str(count) + '.txt', 'w')
f_List.write(full_path + "\n")
count = count + 1
PS。我能想到的唯一解决方法是假设最后一个值将始终附加到最后一组文件。因此,当计数达到len(n_List - 1) 时,我跳过时间差异计算,并自动将最终值添加到最后一组。虽然这可能在大多数情况下都有效,但我可以看到列表中的最终值可能需要放在单独的组中的极端情况。
【问题讨论】:
-
那么您希望最后一个文件进入哪个文件夹?
-
文件实际上并没有去任何地方,我只是使用时间差异计算将文件分组到不同的列表中。文件路径根据分组写出到单独的 txt 文件中。所以在这种情况下,最后一个值将被添加到最后一个文本文件的最后一行。这有意义吗?
-
最后的数据呢?
-
你有一个算法问题。如果您有 n 个值的列表,则值之间将只有 n-1 个差异。如果你想对 n 个对象进行分类,你不能只使用 n-1 个值。你需要想出一个更好的算法。
-
数字后面的
L后缀使其成为long(一种整数),而不是浮点数。
标签: python list while-loop nested