识别奇数列表并从给定列表中找到其索引

问题描述 投票:0回答:1
a = [[1, -2], [1, -2], [1,6], [1, -2], [1, -2]]
     
def find_idx(lists):
     for i in range(len(lists)-1):
          diff = np.array(lists[0])-np.array(lists[i+1])
          for k in diff:
               if k != 0:
                    print(i+1)
find_idx(a)

上面的函数运行良好,但是当奇数列表位于索引 0 时

(lists = [[1, 6],[1, -2], [1, -2], [1, -2], [1, -2]])

不起作用。

我需要改进功能。

python list function for-loop
1个回答
0
投票

您的代码假定

lists[0]
是重复的“正常”值(列表),因为您在
diff
表达式中将任何其他元素与它进行比较。但是,如果您发现索引 1 处的条目与索引 0 处的条目不同,您还无法知道哪一个是奇数。在这种情况下,您需要与列表中的另一个元素(例如最后一个元素)进行额外的比较。

不是你的问题,但你不需要 numpy 或

diff
表达式来比较两个整数列表。在 Python 中,您可以将此类列表与
==
进行比较。

这里我以最后一条作为参考值,如果第一个恰好不同,则有两种可能:要么第一个是奇数,要么是最后一个。与第二个条目进行比较可以看出区别:

def find_idx(lists):
    reflist = lists[-1]
    for i, lst in enumerate(lists):
        if lst != reflist:
            # when i == 0 we don't have enough information yet: make another comparison
            if i == 0 and lists[1] != reflist:
                return len(lists) - 1
            return i
    return -1
© www.soinside.com 2019 - 2024. All rights reserved.