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