首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python列表中获取特定元素的索引

从python列表中获取特定元素的索引
EN

Stack Overflow用户
提问于 2018-09-27 10:31:59
回答 5查看 222关注 0票数 1

我有一个清单,上面有这样的小号和大号:

代码语言:javascript
复制
[234, 454, 123444, 123, 234, 122234, 234, 354, 654, 123231, 234, 342, 1231231]

“大数字”至少比较小的数字大10倍。总的来说,榜单上有4个“大数字”:1234441222341232311231231

我想找出第三和第四“大数”的指数:

美国皇家银行( 123231 1231231 9 10 11 12 )

如你所见,第三个“大数”的索引是9,第四个“大数”的索引是12,因此输出应该是912

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-09-27 11:13:36

排序在这里是没有好处的,因为如果一个更大的值long出现在一个较小的长值之前,那么顺序就会被破坏,就像在这个示例(123444 > 123231)中所做的那样。相反,使用enumerate查找大于其他项值10倍的项,并按照它们的外观顺序将它们的索引追加到新列表中,然后获取包含索引的新列表的第3项和第4项。

代码语言:javascript
复制
longs = []
j = min(l)

for idx, item in enumerate(l):
    if item/10 > j:
        longs.append(idx)

print(*longs[2:])

或列表理解

代码语言:javascript
复制
longs = [idx for idx, item in enumerate(l) if item/10 > j]

9 12

票数 4
EN

Stack Overflow用户

发布于 2018-09-27 10:53:44

实现这一目标的一种方法是在列表中的值中找到拐点。这可以通过使用相同的阈值因子来完成。

例如:

代码语言:javascript
复制
def inflection_index(a, threshold=10):
    a.sort()

    current = 0
    for next in range(1, len(a)):
        if a[next] >= threshold * a[current]:
            return i
        current += 1

    return None

更复杂的方法包括根据导数找出曲线的凹度变化的位置。您可以了解更多关于hereherehere的信息。

票数 -2
EN

Stack Overflow用户

发布于 2018-09-27 10:57:14

您可以通过列表进行排序,然后使用索引的反向切片查找最大值的索引来实现这一目标:

代码语言:javascript
复制
num = [234, 454, 123444, 123, 234, 122234, 234, 354, 654, 123231, 234, 342, 1231231]

temp = sorted(num)

for i in temp[::-1][:2]:
    print("Index of", i, "is:", num.index(i))

结果:

代码语言:javascript
复制
Index of 1231231 is: 12
Index of 123444 is: 2
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52534972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档