2013-07-09 47 views
0

使用单词'sequence'的松散定义我有一个包含超过2,000个元素(序列号)的列表,并且对于每个短序列,我想将最高数字附加到单独的名单。这是我的数据的代表性和简单的例子:有选择地将列表中的元素添加到新列表中

# seqNums = ['01', '02', '01', '02', '03', '01', '01', '02', '03', '04', '01', '02', '03', '01', '02', '03', '04', '05']

在这个例子中,我将要追加要素1,4,5,9,12,和17至一个新的列表看起来像下面的“ newSeqNums'。

# newSeqNums = ['02', '03', '01', '04', '03', '05']

我已经尝试了很多不同的东西,下面的代码是衣柜里我能到预读列表中,但它不工作。有什么建议么?

seqNums = ['01', '02', '01', '02', '03', '01', '01', '02', '03', '04', '01', '02', '03', '01', '02', '03', '04', '05'] 
newSeqNums = [] 
def readAhead(seqNums): 
    for item in seqNums: 
     yield item 
    yield None 

items = readAhead(seqNums) 
item = items.next()   # get first item 

while item: 
    nextItem = items.next() # get next item 
    if item < nextItem: 
     pass 
    else: 
     newSeqNums.append(nextItem) 
    item = items.next() 

print newSeqNums 
print len(newSeqNums) 

''' 
# output for above code 
['01', '01'] 
2 
''' 

回答

0

我不知道为什么我有这样一个困难时期与这一点,但像往常一样(至少就我而言)的解决方案比我想象的要简单,我倾向于高估想想事情。无论如何,下面的代码给了我想要的解决方案。

seqNums = ['01', '02', '01', '02', '03', '01', '01', '02', '03', '04', '01', '02', '03', '01', '02', '03', '04', '05'] 
newSeqNums = [] 
for i in range(len(seqNums)): 
    if seqNums[i] == seqNums[-1]: 
     newSeqNums.append(seqNums[-1]) 
    elif seqNums[i] < seqNums[i + 1]: 
     pass 
    else: 
     newSeqNums.append(seqNums[i]) 
print newSeqNums 


''' 
# output for above code 
['02', '03', '01', '04', '03', '05'] 
'''' 
+0

上述解决方案是否可以转换为列表理解? –