Как выбрать все значения от одного порога до другого?

#python #tuples

#python #кортежи

Вопрос:

У меня есть упорядоченный кортеж данных:

 my_data = (1,2,3,2,4,2,3,3,5,7,5,3,6,8,7)
  

Как я могу подмножество элементов кортежа таким образом, чтобы все элементы, включая и после первого экземпляра 3, сохранялись до первого значения == 7? Например, результат должен быть:

 desired_output = (3,2,4,2,3,3,5,7)
  

Ответ №1:

Я не уверен, что вы подразумеваете под порогом (значение = = 7 или любое значение> = 7), но вот решение:

 my_data = (1,2,3,2,4,2,3,3,5,7,5,3,6,8,7)
index1 = my_data.index(3)
index2 = my_data.index(7)
desired_output = my_data[index1:index2 1]
print desired_output
  

Комментарии:

1. Я прояснил вопрос на основе вашего ответа.

Ответ №2:

my_data.index(my_data.index(min_thre):my_data.index(max_thre) 1)

Ответ №3:

 found_three = False
res = []
for d in data:
    if d == 3:
         found_three = True
    if found_three:
         res.append(d)
    if d == 7;
         break
  

Комментарии:

1. Хотя этот фрагмент кода может решить вопрос, включение объяснения действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос для читателей в будущем, и эти люди могут не знать причин вашего предложения по коду.

Ответ №4:

itertools имеет dropwhile и takewhile что вы можете использовать в своих интересах. Используйте dropwhile , чтобы отбросить все до первого 3 , а takewhile затем взять все до первых 7. Затем просто объедините два

 import itertools

L = [1,2,3,2,4,2,3,3,5,7,5,3,6,8,7]
answer = list(itertools.takewhile(lambda x: x!=7, itertools.dropwhile(lambda x: x!=3, L)))
answer.append(7)

In [49]: answer
Out[49]: [3, 2, 4, 2, 3, 3, 5, 7]
  

Комментарии:

1. desired_output требуется, чтобы это был кортеж, а не список

2. @MichaelMaggs: затем используйте tuple(...) , чтобы превратить этот список в кортеж