python - 在 4 个列表的组中查找项目的索引
问题描述
以下是 python 中的一个函数,用于在 4 组中查找输入的索引。
def mapping(inp_rate=[],inp_rssi=[]):
a1=[6.5,13.0,19.5,26.0,39.0,52.0,58.5,65.0]`
a11=[7.2,14.4,21.7,28.9,43.3,57.8,65.0,72.2]
a2=[13.0,26.0,39.0,52.0,78.0,104.0,117.0,130.0]
a22=[14.4,28.9,43.3,57.8,86.7,115.6,130,144.4]
result_list = []
print inp_rate
for value in inp_rate:
if value in a1:
result_list.append(a1.index(value))
elif value in a11:
result_list.append(a11.index(value))
elif value in a2:
result_list.append(a2.index(value))
elif value in a22:
result_list.append(a22.index(value))
else:
result_list.append(0)
print(result_list)
输出如下:
['65.0', '144.4', '72.2', '72.2']
[0, 0, 0, 0]
由于列表项存在于 a1,a11,a2,a22 中,无法理解为什么索引为 0!
解决方案
您说您想要索引,但 65 在a1
列表中的索引为 7。如果您想要实际位置(列表的第一项是 1 而不是 0),那么只需将一个添加到附加到列表中的值。
此外,正如@Chris 提到的,当值不在任何列表中时,我添加了一个打印语句。
a1 = [6.5, 13, 19.5, 26, 39, 52, 58.5, 65]
a11 = [7.2, 14.4, 21.7, 28.9, 43.3, 57.8, 65, 72.2]
a2 = [13, 26, 39, 52, 78, 104, 117, 130]
a22 = [14.4, 28.9, 43.3, 57.8, 86.7, 115.6, 130, 144.4]
inp_rate = [65, 72.2, 72.2, 39, 72.2, 144.4, 78, 13, 72.2, 104, 6.5]
result_list = []
for value in inp_rate:
if value in a1:
result_list.append(a1.index(value))
elif value in a11:
result_list.append(a11.index(value))
elif value in a2:
result_list.append(a2.index(value))
elif value in a22:
result_list.append(a22.index(value))
else:
print("{} cannot be found".format(value))
print(result_list)
这打印
[7, 7, 7, 4, 7, 7, 4, 1, 7, 5, 0]
推荐阅读
- cassandra - 当我在备份目录中有大量文件时,恢复 Cassandra 增量备份的过程是什么
- html - 如何在这里调整我的身材的大小?
- css - 溢出:自动与 flex 导致滚动条重叠内容
- angular - 禁用 NgbTypehead 的多个实例
- sql - SQL query for user input
- google-apps-script - 如何将元素转换为与第一个选定元素相同的大小?
- python - pyspark 在 1 节点和 2 节点集群上的连接数据性能(混洗数据)
- xslt-1.0 - 如何删除字符串中的重复字符?
- objective-c - 第二个 animateWithDuration 调用禁用动画
- php - laravel 数据库通知存储 url 添加 \\ 到 //