如何从一个阈值到另一个阈值选择所有值?

时间:2016-10-13 03:04:14

标签: python tuples

我有一个有序的数据元组:

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)

4 个答案:

答案 0 :(得分:4)

我不确定您的阈值是什么意思(值== 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)

答案 2 :(得分:0)

itertoolsdropwhiletakewhile,您可以利用它们。使用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]

答案 3 :(得分:0)

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