[英]Get list number for a given element in list of lists
Let's say we have N
elements from 0
to N - 1
( N
is known) scattered into k
lists as follows: 假设我们有从0
到N - 1
N
元素(已知N
)散布到k
列表中,如下所示:
X = [[0, 1, 6], [2, 4], [3, 5]]
for N = 7, k = 3
对于N = 7, k = 3
X = [[0, 1, 6], [2, 4], [3, 5]]
Given the number how can I determine the number of the group it is in? 给定号码,我如何确定所在的组的号码? For example 1
is in first group and 5
is int the third group. 例如1
在第一组中,而5
在第三组中。
I can nest loops and check it manually (for each given number check each group where it can be) but how do I do this with more clean and functional-like style in Python? 我可以嵌套循环并手动进行检查(对于每个给定的数字,请检查每个组可以位于的位置),但是如何在Python中使用更简洁且类似于函数的样式来完成此操作? It'd more useful especially when I have list of numbers [1, 3, 5]
and want to transform it into list of groups of each of elements ie. 特别有用,当我有数字列表[1, 3, 5]
并将其转换为每个元素的组列表时,即。 [1, 3, 3]
EDIT: 编辑:
I was asked to present the way I am doing it now so here it comes: 我被要求介绍我现在的工作方式,所以来了:
results = []
numbers = [1, 3, 5]
for number in numbers:
for i in range(len(X)):
if number in X[i]:
results.append(i)
Probably the easiest way to do this without re-computing for every new number you're looking for is to make a dictionary: 无需重新计算正在寻找的每个新数字的最简单方法就是制作字典:
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}
Now for any given number, just look it up: 现在,对于任何给定的数字,只需查找即可:
X_map.get(5, None) # 2
X_map.get(7, None) # None
[(index, row.index(your_number)) for index, row in enumerate(X) if your_number in row]
output: 输出:
your_number = 1
[(0, 1)]
means: array number 0, index 1 表示:数组编号0,索引1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.