对于每个元素,直到当前元素,都通过数组进行条件式迭代

时间:2018-11-02 00:46:26

标签: python iteration

在Python中,对于数字列表,我想在该点之前附加不小于序列最大值的12的每个数字,然后在序列中的数字小于12的情况下结束迭代最大值。到目前为止,这是我正在尝试的操作,但是无法获得正确的结果(在下面,应附加直到2nd 1的所有数字):

array = [2,4,7,3,9,10,1,14,1,20,13,14,14,10,6,12]

for i in range(len(array)):
       list1 = []
       if not array[i] < (i - 12) in array[0:i]:
           list1.append(array[i])
           print(list1)

为弄清楚,我正在研究一个按顺序的价格数据集。我想遍历该序列,直到该数字小于该序列的最大值为止的12。然后,我需要结束该迭代并再次开始相同的过程,但是要从数据集中的下一个价格开始。

3 个答案:

答案 0 :(得分:1)

短得多...

只有一线!!

这里是:

result = sorted(set(array),key=array.index)[:12]

现在:

print(result)

是:

[2, 4, 7, 3, 9, 10, 1, 14, 20, 13, 6, 12]

答案 1 :(得分:0)

如果我正确理解了您的问题,那么我认为这应该可以实现您想要的:

# added more data to better illustrate solution
array = [2, 4, 7, 3, 9, 10, 1, 14, 1, 20, 13, 14, 10, 6, 12, 10, 4, 5, 6, 7, 8, 9, 123]
result = []

for i in range(len(array)):

    if(len(result) < 12):
        value = array[i]
        if( not value in result ):
            result.append(value)   
    else:
        break

print('input', array)
print('result', result)

这里有pyfiddle供您尝试

答案 2 :(得分:0)

您的问题尚不清楚,但是如果我理解正确,那么您正在寻找这样的东西:

array = [2, 4, 7, 3, 9, 10, 1, 14, 1, 20, 13, 14, 10, 6, 12]
list1 = []
for i in range(len(array)):
    if (max(array[:i+1]) - array[i] ) <= 12:
        list1.append(array[i])
    else:
        break

print(list1) # Output: [2, 4, 7, 3, 9, 10, 1, 14, 10]