我已经生成了一个唯一的字符串列表。每个字符串是由冒号分隔的6个数字。字符串列表按第一个数字从大到小排序,然后依次按第二、第三个数字排序,依此类推。下面的示例代码段:
UniqueTierHash = [ '6:3:5:6.5:5:2.5',
'6:3:5:5.5:5:3.5',
'6:2.5:5:5:4:3',
'6:2.5:5.5:5.5:4.5:3.5',
'5.5:4.5:4.5:4.5:5.5:4.5' ]
我试着把这张单子拿出来,比较一个项目和下一个项目,如果6个数字中的每一个都大于或等于下一个项目。最初,我编写了一个函数来实现这一点,但它最终返回了所有字符串。这是因为一个较小的字符串随后将与下一个字符串进行比较,并且由于不同,这两个字符串都将保留
TierHashKeep = []
for i in UniqueTierHash:
if UniqueTierHash.index(i) == len(UniqueTierHash) - 1: break
test = function.CompareTierHash(i,UniqueTierHash[UniqueTierHash.index(i) + 1])
print(i + ' \n' + UniqueTierHash[UniqueTierHash.index(i) + 1])
print(test)
if test == False:
TierHashKeep.append(i)
TierHashKeep.append(UniqueTierHash[UniqueTierHash.index(i) + 1])
elif test == True:
TierHashKeep.append(i)
else:
print('Error in TierCompare')
我怀疑我需要对UniqueTierHash进行某种递归计算,并在遍历列表时删除项。任何关于如何最好地解决这一问题的建议都将不胜感激。谢谢
处理此类数据的一个好方法是将其放入NumPy数组中。执行筛选的一种方法是仅使用完整数组的第一行初始化列表,然后迭代完整数组的其他行,将每个行与新列表的最后一个元素进行比较,如果其所有元素都较小,则将其添加到新列表中:
你让这里的生活变得很艰难;如果您希望定期访问元素的索引,那么应该使用类似
for index, hash in enumerate(UniqueTierHash)
的内容迭代列表,但在这种情况下,我认为您并不真正需要索引;您只需要访问两个相邻的元素,这样就可以获取第一个元素,然后遍历剩余的列表,每次都保留“previous”值。另一种方法是迭代索引,每次通过循环直接获取元素我只保留了通过您测试的实际值;你似乎保留了所有的价值观,有些价值观保留了两次
相关问题 更多 >
编程相关推荐