Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过数组对每个元素进行条件迭代,直至当前元素_Python_Iteration - Fatal编程技术网

Python 通过数组对每个元素进行条件迭代,直至当前元素

Python 通过数组对每个元素进行条件迭代,直至当前元素,python,iteration,Python,Iteration,在Python中,对于一个数字列表,我希望将不小于序列最大值12的每个数字追加到该点,然后在序列中的一个数字小于最大值12时结束迭代。这是我目前正在尝试的,但无法得到正确的结果(在下面,应附加第2个1之前的所有数字): 数组=[2,4,7,3,9,10,1,14,1,20,13,14,10,6,12] for i in range(len(array)): list1 = [] if not array[i] < (i - 12) in array[0:i]:

在Python中,对于一个数字列表,我希望将不小于序列最大值12的每个数字追加到该点,然后在序列中的一个数字小于最大值12时结束迭代。这是我目前正在尝试的,但无法得到正确的结果(在下面,应附加第2个1之前的所有数字):

数组=[2,4,7,3,9,10,1,14,1,20,13,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)
范围内i的
(len(数组)):
列表1=[]
如果不是数组[0:i]中的数组[i]<(i-12):
列表1.追加(数组[i])
打印(列表1)

为了澄清这一点,我正在研究一个连续的价格数据集。我想迭代序列,直到一个数字比序列的最大值小12为止。然后,我需要结束该迭代并再次开始相同的过程,但从数据集中的下一个价格开始。

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

# 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)
#添加更多数据以更好地说明解决方案
数组=[2,4,7,3,9,10,1,14,1,20,13,14,10,6,12,10,4,5,6,7,8,9,123]
结果=[]
对于范围内的i(len(数组)):
如果(len(结果)<12):
值=数组[i]
如果(不是结果中的值):
result.append(值)
其他:
打破
打印('输入',数组)
打印('结果',结果)

下面是一个供您尝试的方法

您的问题有点不清楚,但如果我理解正确,您正在寻找类似以下内容:

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]
array=[2,4,7,3,9,10,1,14,1,20,13,14,10,6,12]
列表1=[]
对于范围内的i(len(数组)):
如果(max(数组[:i+1])-数组[i])短得多

就一行

这是:

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

是:


用所需的输出清楚地解释您的问题。目前,根据您的逻辑,您的输出不应该是
[2,4,7,3,9,10,1,14,1]
,因为
1<(14-12)
14
是最大值吗?我相信这里的问题是set模块的使用。我使用的数组是一个序列。我相信这解决了问题-你介意浏览一下语法吗?我的理解是:如果从迭代的最大值中减去数组的元素I小于或等于12,那么请打断…当然,所以“I”是数组中当前元素的索引,在if语句中,我检查到我们当前所在点的最大元素是否小于或等于12减去当前元素(这是我从你的问题中理解的)。如果是,我们将其添加到结果列表中,如果不是,我们打破循环并打印结果列表
print(result)
[2, 4, 7, 3, 9, 10, 1, 14, 20, 13, 6, 12]