【发布时间】:2015-02-11 19:05:52
【问题描述】:
当我枚举一个列表时,是否有一种预期的、pythonic 的方式来获取提供的最后一个索引值?
相当于这个的东西:
highest = None
for index, value in enumerate(long_list):
# do stuff with index and value
highest = index
return highest
我不喜欢这种方法。它有数百个不必要的变量赋值。还有就是丑。
背景:我有一个使用 RDBS 和 SQLAlchemy 构建的有序列表,使用数字作为关系表中的索引。我还将最高使用的索引号存储在列表中,以便轻松附加新条目(无需在关系表上进行额外的最大查找)。当事情变得一团糟时,无论出于何种原因,我都包含了一个 reorg 函数,它从 0 开始重建索引(以消除任何间隙)。我通过对关联表进行枚举迭代来实现这一点。之后,我需要对它们进行计数或最大化索引,以获得列表表的新的最高索引值。这有点让我烦恼。
建议?最好是在 2.7 中工作的东西。
【问题讨论】:
-
最后一个索引?类似
len(long_list) - 1? -
long_list[-1]获取列表中的最后一个元素,len(long_list) - 1获取列表中的最后一个索引 -
这就是我现在正在做的事情。但它背后的列表更复杂,就像一个 python 列表,因此可能会以更复杂的方式重新计算该值。只是感觉不对,当我在循环中这样做时。
-
如果您在这一步之前已经在遍历列表,那为什么不存储计数呢?