2012-03-23 1 views
0

내가 클러스터 알고리즘을하고 있어요하고 데이터를 클러스터 후에 때, 예를 들어, 문서를 하나의 문서 (클래스 문서) 및 그룹 (클래스 그룹)이 포함 된 목록을 반환 :파이썬에서 알 수없는 서브리스트를 가진리스트를 반복 할 수 있습니까?

Group(Document(id='NSVcteD-5', name=u'1332410487000-2ed0728e9015028e7c41341011a1bd82'), Group(Document(id='NSVcteD-11', name=u'1332410485000-18ae371b18b3790874fb886085c770af'), Group(Document(id='NSVcteD-12', name=u'1332410484000-dc544efc146674289b126062b000a302'), Group(Document(id='NSVcteD-6', name=u'1332410487000-25e815a47779642df2a416495bd5174c'), Group(Document(id='NSVcteD-7', name=u'1332410485000-eb66881f5b1c633dd1609ad6fc18a45c'), Group(Document(id='NSVcteD-2', name=u'1332410487000-a39e2076ca4477e8a324081732bd36c0'), Group(Document(id='NSVcteD-9', name=u'1332410485000-db1acc63d72a63f65623610242394877'), Group(Group(Document(id='NSVcteD-13', name=u'1332410152000-13ea7da3c74917b86bb70e59ff356397'), Document(id='NSVcteD-3', name=u'1332410487000-6287c3d86e6416cb421b6f176a367e23')), Group(Document(id='NSVcteD-10', name=u'1332410485000-508937f6a4cae9ed79dbd54f016ca61c'), Group(Document(id='NSVcteD-4', name=u'1332410487000-4b16fa5633a9df1341690d9a32a4f06d'), Group(Document(id='NSVcteD-1', name=u'1332410487000-b6696b10ad4415c87e41e5367fd4bcfa'), Group(Document(id='NSVcteD-8', name=u'1332410485000-e3f77be9cddcb9efc07914654454d817'), Group(Document(id='NSVcteD-14', name=u'1332410151000-cc13783d0980106d686d64082121f6ac'), Document(id='NSVcteD-15', name=u'1332410151000-a91330e828e41ed3b8503f3133f61fc7')))))))))))))) 

으로 이해하기 쉽도록 만들고, 스크립트로 생성 된 실제 obj를 가져와야합니다. 다중 목록으로 구성된 목록이며 JSON 스타일 문자열로 변환하는 등 반복 처리하는 방법을 알지 못합니다.

도움을 주시면 감사하겠습니다.

+0

이것은 이해할 수 없습니다. – Marcin

+3

당신의 언어가 특별히 파이썬이라면, 일반 텍스트 읽기 어려운 텍스트 예제 대신 깨끗하고 명확한 파이썬 코드 예제를 포함시켜보십시오. – jdi

+0

귀하의 의견을 주셔서 감사합니다, 난 그냥 내 회사 프레임 워크에 의해 생성 된 개체를 포함합니다. 범위 – mrblue

답변

1

그런 뜻입니까? 이것은 완전히 비효율적이며 특정 깊이 후에 깨질 것입니다.

>>> def recursive_iterate(iterable): 
...  iterated_object=[] 
...  for elem in iterable: 
...   if hasattr(elem,"__iter__"): 
...    iterated_object.append(recursive_iterate(elem)) 
...   else: 
...    iterated_object.append(elem) 
...  return iterated_object 
... 
>>> recursive_iterate([1,2,3,[4,5,6]]) 
[1, 2, 3, [4, 5, 6]] 
>>> recursive_iterate([1,2,3,xrange(10)]) 
[1, 2, 3, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]] 
>>> recursive_iterate([1,2,3,[4,5,6,[xrange(10)]]]) 
[1, 2, 3, [4, 5, 6, [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]] 
+0

안녕 luke, 일반적으로, 이것은 내가 무엇을 찾고 있습니다. 하지만이 함수의 성능에 대한 팁을 좀 더 알려주시겠습니까? 또는 재귀 적으로 반복 할 수있는 다른 방법이 있습니까? 덕분에 많이 – mrblue

+0

재귀 반복은 일반적으로 코드의 알고리즘 복잡성을 과도하게 증가시키기 때문에 좋지 않습니다. – luke14free

+0

테일 재귀를 제거하려고 할 수 있지만 위 코드에 대한 패치 일 뿐이며 그만큼 도움이되지는 않습니다. 아마도 c/C++/cython으로 코드를 작성해야합니다. 또 다른 옵션은 여기에 설명 된대로 중첩 된 객체를 json으로 변환하는 것입니다. http://stackoverflow.com/questions/2343535/easiest-way-to-serialize-a-simple-class-object-with-simplejson – luke14free

관련 문제