首页 > 解决方案 > 遍历整数列以查看该值是否包含在不同列的范围内

问题描述

我有两个列表:一个列表包含整数,第二个包含范围列表。

以下是这些列表的定义:

range_list = [range(0,7), range(7,12), range(12,22), etc.]
integer_list = [9, 3, 100, etc.]  

两个列表的大小相同。

我想根据它在 range_list 中的范围来标记我的 integer_list 中的整数。已经存在一个 label_list,因此 range_list 中的第 n 个范围对应于 label_list 中的第 n 个标签。我的意思是,如果我的整数在第一个范围内(range_list 的第零个元素),它将收到 label_list[0] 的标签。我的问题是如何正确遍历 integer_list 和 range_list。

我自己解决了这个问题

empty_list = [] #list where the labels will be appended to
for i in integer_list:
  for j in range_list:
      if i in j:
         empty_list.append(label_list[j])
         break
      else:
        continue  

使用这种方法,我似乎正在进行一个无限循环(或者至少是严重的时间负担)。

如果有助于澄清 label_list 的定义,就是这样:

label_list = ['Dementia', 'Schizophrenia', 'Diabetes I', etc..]

标签: pythonpandas

解决方案


每当您有关联时,您可能应该考虑使用字典。我只想扩展范围,以便您拥有一个从 int 到标签的字典。然后创建一个字典,将 int 与查找的值相关联。

range_list = [range(0,7), range(7,12), range(12,22)]
label_list = ['Dementia', 'Schizophrenia', 'Diabetes I']
integer_list = [9, 3, 10]

table = {}
for int_range, label in zip(range_list, label_list):
    for i in list(int_range):
        table[i] = label

{i: table[i] for i in integer_list}

输出

{9: 'Schizophrenia', 3: 'Dementia', 10: 'Schizophrenia'}

请注意,我已将您的示例更改为使用 int 10 而不是 100,因为您没有定义包含 100 的范围。


推荐阅读