python - 遍历整数列以查看该值是否包含在不同列的范围内
问题描述
我有两个列表:一个列表包含整数,第二个包含范围列表。
以下是这些列表的定义:
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..]
解决方案
每当您有关联时,您可能应该考虑使用字典。我只想扩展范围,以便您拥有一个从 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 的范围。
推荐阅读
- python - 减少 Google OR-tools python 脚本的运行时间(使用 Google Cloud)
- mysql - Mysql根据其他列是否为空来选择行
- php - 多次刷新后phpcurl失去连接
- haskell - 如何设置 GHCi 提示以显示由自定义分隔符分隔的模块?
- sql - 如何在 sql 中分组和排名,然后从表中选择其他列,特定组的所有行都应该在一起
- apache-spark - 从 Apache Spark 中的逻辑计划获取数据帧的含义
- c# - 回收站视图不适用于 Xamarin Android 中的数据库
- azure - 图形 API:将小项目上传到 OneDrive 失败并出现错误 504
- python - 正则表达式 - 将连字符后的文本提取到 Python 中的字典中
- reactjs - React-Redux 功能组件多重渲染