2013-07-09 3 views
0

'시퀀스'라는 단어의 정의가 넉넉하지 않습니다. 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

위의 솔루션을 목록 이해로 변환 할 수 있습니까? –

관련 문제