【发布时间】:2016-06-01 15:38:08
【问题描述】:
抱歉这个菜鸟问题,但我才刚刚开始使用 Python。
我有一个很长的列表,包含 195 个不同的整数,但它们的范围从 0 到 2399。例如,数字 90 出现多次,而数字 7 根本不出现。
list = [90, 110, 113, 88, 90, 110, 90, 1370, 90]
我想对此进行“标记化”,或将其转换为范围从 0 到 195 的整数列表,同时保留不同值的唯一 ID。 基本上,我想要这个输出:
new_list = [1, 2, 3, 4, 1, 2, 1, 5, 1]
目标是能够有效地迭代列表。
【问题讨论】:
-
高效地遍历列表???一个数字就是一个数字。迭代更大的数字不会改变任何事情
-
我真的不知道你为什么想要这个,但你可能想要使用哈希。整数 (90, 110 ...) 是关键。值是 id。当你第一次找到一个数字时,你增加一个计数器并将它存储在散列和新列表中。下次你找到一个数字时,你使用哈希中的 id。
-
我的两分钱,通常当我听到“非常长的清单”时,我认为是“万亿”,而不是糖果的价格。
-
问题是我不知道这 195 个整数到底是什么,我需要在完整的 (200.000) 列表中搜索它们。将它们从 0 到 2399 之间的随机分布减少到 0-195 使其更容易。哈希解决方案听起来很不错,而且很可能是一种更“正确”的方法。但是,Joran 提出的解决方案解决了我的问题,这是一个一次性使用脚本(目前)。完整列表刚刚超过 200.000,问题是我必须基于它创建单位矩阵。将复杂性从 2399 个不同的步骤减少到 195 个是巨大的性能提升。