在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。然后,我需要结束该迭代并再次开始相同的过程,但是要从数据集中的下一个价格开始。
答案 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]