获取列表列表中

时间:2017-11-23 15:52:24

标签: python

假设我们将N0的{​​{1}}元素(N - 1已知)分散到N列表中,如下所示:

k

X = [[0, 1, 6], [2, 4], [3, 5]]

根据号码,我如何确定它所在的群组的号码?例如,N = 7, k = 3位于第一组,1位于第三组。

我可以嵌套循环并手动检查(对于每个给定的数字,检查每个组的位置)但是如何在Python中使用更干净和功能更强的样式?它更有用,尤其是当我有数字列表5并希望将其转换为每个元素的组列表时,即。 [1, 3, 5]

编辑:

我被要求提出我现在这样做的方式,所以它来了:

[1, 3, 3]

1 个答案:

答案 0 :(得分:3)

对于您正在寻找的每个新号码而言,如果不重新计算,最简单的方法就是制作字典:

X = [[0, 1, 6], [2, 4], [3, 5]]
X_map = {element: group for group, elts in enumerate(X) for element in elts}
# {0: 0, 1: 0, 2: 1, 3: 2, 4: 1, 5: 2, 6: 0}

现在对于任何给定的号码,只需查看:

X_map.get(5, None)  # 2
X_map.get(7, None)  # None