#python #indexing #tuples
Вопрос:
Итак, я хочу получить индекс компонента в списке кортежей, который имеет заданное значение. Вот пример того, что я сделал до сих пор:
импорт случайных
кортежи=[(‘a’, 1.09), (‘b’, 5.89), (‘c’, 6.85), (‘d’, 9.48)]
x = случайный выбор(кортежи)[0]
Здесь я случайным образом возвращаю a,b,c или d(x). Теперь я хочу найти индекс компонента, содержащего x, в списке «кортежи».
Надеюсь, вы понимаете мою точку зрения!
Ответ №1:
Этого должно хватить:
index_of_element = [i for i, t in enumerate(tuples) if t[0] == x][0]
Используя enumerate, вы выполняете итерацию tuples
, создавая кортеж элементов for и соответствующий ему индекс. пример: (0, («a», 1.08))
Затем, используя if
понимание внутри списка, вы фильтруете элементы по значению x для первого элемента t[0]
текущего примера кортежа
Это дает вам массив с элементом, который вы ищете. Наконец [0]
-то дает вам этот элемент.
Вы можете проверить, не пуст ли список, на случай, если вы его не найдете.
Ответ №2:
Вы можете использовать понимание списка 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]