2017-10-04 1 views
1

나는 null 값을 포함하는 다른 목록에 목록의 요소를 삽입하는 방법은 무엇입니까?

l1=[obj1, obj2, obj3,obj4, obj5] 

(L1)는 날짜 값은 '없음'입니다 경우를 제외하고 날짜별로 구성되어 두 목록

있습니다.

나는 처음에이 목록을 삽입 할 :

l2=[obj9, obj6,obj7,obj8] 

내가 날짜를 존중하려는 : 그래서 obj9l2

에 다른 사람을 위해 obj1과 같은 일 후에 l1에 배치됩니다 obj1.date<obj9.date 경우

for el in l1: 
     for e in l2: 
      if e.date<el.date 
       l1.insert(l1.index(el),e) 
      else: 
       l1.insert(l1.index(el)+1,e) 

프로그램으로 실행 :

나는이 코드를 시도 out 오류는 리턴되지만 결과는 리턴되지 않습니다.

pythonic 방식으로이 작업을 수행하는 방법에 대한 아이디어가 있으십니까?

+1

오류가 있습니까? 어떤 부분이 '작동하지 않습니까?' – brddawg

+0

결과가 표시되는 템플리트가 계속로드되고 목록이 표시되지 않습니다. – rahma

+0

'없음'날짜가있는 객체를 삽입하고 순서를 유지하는 것과 관련하여 어떻게 처리 하시겠습니까? – martineau

답변

2

"null"처리 방법에 대한 내 질문에 대답하지 않았습니다. 귀하가 None이라는 값을 가정한다고 가정합니다. 다음은 일 수 있습니다.은 올바르게 처리합니다.

다른 답변에서 주석의 "색인에 null 값이있는 obj가 필요합니다."라고 말했습니까? 그렇지 않으면 두 번째 목록에서 요소를 삽입 할 때 원래 순서를 그대로 유지합니다. 어떤 순서로도 될 수 있습니다 ... 그리고 그것은 몹시 느리게 움직이는 것처럼 보이지 않습니다.

import datetime 

class Object(object): 
    def __init__(self, date_string=None): 
     self.date = (date_string if date_string is None else 
        datetime.datetime.strptime(date_string, "%Y%m%d")) 

    def __repr__(self): 
     return '{}({!r})'.format(self.__class__.__name__, 
           self.date.strftime("%Y%m%d") if self.date 
           else None) 

obj1 = Object('20171001') 
obj2 = Object('20171002') 
obj3 = Object(None) 
obj4 = Object('20171004') 
obj5 = Object('20171005') 

obj6 = Object('20171006') 
obj7 = Object('20171007') 
obj8 = Object('20171008') 
obj9 = Object('20171009') 

l1 = [obj1, obj2, obj3, obj4, obj5] 
l2 = [obj9, obj6, obj7, obj8] 

print('Before:') 
print(l1) 
print(l2) 

for elem2 in l2: 
    for i, elem1 in enumerate(l1): 
     if elem1.date and elem2.date < elem1.date: 
      l1.insert(i, elem2) 
      break 
    else: 
     l1.append(elem2) 

print('After:') 
print(l1) 

출력 :

Before: [Object('20171001'), Object('20171002'), Object(None), Object('20171004'), Object('20171005')] [Object('20171009'), Object('20171006'), Object('20171007'), Object('20171008')]

After: [Object('20171001'), Object('20171002'), Object(None), Object('20171004'), Object('20171005'), Object('20171006'), Object('20171007'), Object('20171008'), Object('20171009')] `

+0

고맙습니다. :) – rahma

관련 문제