我有一个有序的数据元组:
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)
答案 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)
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]
答案 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