【发布时间】:2021-11-13 21:17:58
【问题描述】:
好的,所以我想在具有给定值的元组列表中获取组件的索引。这是我到目前为止所做的一个示例:
随机导入
元组=[('a', 1.09), ('b', 5.89), ('c', 6.85), ('d', 9.48)]
x = random.choice(元组)[0]
在这里,我随机取回 a、b、c 或 d(x)。现在,我想在“元组”列表中找到包含 x 的组件的索引。
希望你明白我的意思!
【问题讨论】:
好的,所以我想在具有给定值的元组列表中获取组件的索引。这是我到目前为止所做的一个示例:
随机导入
元组=[('a', 1.09), ('b', 5.89), ('c', 6.85), ('d', 9.48)]
x = random.choice(元组)[0]
在这里,我随机取回 a、b、c 或 d(x)。现在,我想在“元组”列表中找到包含 x 的组件的索引。
希望你明白我的意思!
【问题讨论】:
应该这样做:
index_of_element = [i for i, t in enumerate(tuples) if t[0] == x][0]
使用枚举,您可以通过创建一个 for 元素及其对应索引的元组来遍历 tuples。示例:(0, ('a', 1.08))
然后通过在列表推导中使用if,您可以根据当前元组示例的第一个元素t[0] 的x 值过滤元素
这为您提供了一个包含您要查找的元素的数组。
最后[0] 给了你那个元素。
您可能需要检查列表是否为空,以防找不到。
【讨论】:
您可以使用enumerate 的列表推导来确定哪个索引与搜索的值匹配。
indexes = [i for i,v in enumerate(tuples) if v[0] == x]
如果索引存在且唯一,则可以获取第一个元素:indexes[0]
也就是说,我不知道你的用例是什么,但随机选择索引而不是值可能更容易:
index = random.randint(0, len(tuples))
values = tuples[index][0]
【讨论】: