假设我们将N
到0
的{{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]
答案 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