简体   繁体   English

获取列表中给定元素的列表号

[英]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: 假设我们有从0N - 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM