【问题标题】:Python: How to search in first column of nested loop?Python:如何在嵌套循环的第一列中搜索?
【发布时间】:2013-02-22 08:00:16
【问题描述】:

我有这样的列表:

[
    [1, 37, 79, 164, 155, 32, 87, 39, 113, 15, 18, 78, 175, 140, 200, 4, 160, 97, 191, 100, 91, 20, 69, 198, 196], 
    [2, 123, 134, 10, 141, 13, 12, 43, 47, 3, 177, 101, 179, 77, 182, 117, 116, 36, 103, 51, 154, 162, 128, 30], 
    [3, 48, 123, 134, 109, 41, 17, 159, 49, 136, 16, 130, 141, 29, 176, 2, 190, 66, 153, 157, 70, 114, 65, 173, 104, 194, 54]
]

我想查找搜索值在第一列的列表项的索引。

例如,如果我搜索 2,它应该返回 1,因为 2 位于列表索引 1 的第一列。

如何在 python 中实现这一点?

【问题讨论】:

    标签: python list search nested


    【解决方案1】:
    >>> [i for i, row in enumerate(data) if row[0] == 2]
    [1]
    >>> data = [
        [1, 2, 3],
        [2, 3, 4],
        [1, 3, 5],
        [2, 6, 8]
    ]
    >>> [i for i, row in enumerate(data) if row[0] == 2]
    [1, 3]
    

    【讨论】:

    • 可以更快吗?对于长列表,此解决方案不会有效。
    • @Sanjivani:我不明白为什么这样做效率不高 - 如果不依次遍历每一行,就无法找到每场比赛。
    • @Sanjivani 比只检查每个列表的第一项更快吗?
    • 只有一个匹配的子列表。如果代码没有返回所有匹配项,而只是首先返回,那么也可以。
    • @Sanjivani 然后改成next(i for i, row in enumerate(data) if row[0] == 2),第一场比赛就停了。
    猜你喜欢
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 2010-12-12
    • 2015-07-13
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多