2016-07-30 3 views
1

배열이있는 배열이있는 .NET 구조가 있습니다. 가능한 경우 IronPython의 목록 이해를 사용하여 특정 배열의 특정 배열에있는 항목의 멤버 목록을 crete하려고합니다. 여기 배열 내의 .NET 배열에 대한 중첩 목록 이해

내가 지금 뭐하는 거지입니다 :

tag_results = [item_result for item_result in results.ItemResults if item_result.ItemId == tag_id][0] 
tag_vqts = [vqt for vqt in tag_results.VQTs] 
tag_timestamps = [vqt.TimeStamp for vqt in tag_vqts] 

그래서, 다음 해당 항목 결과에서 vqts 배열을 얻을, 내 조건에 일치하는 결과 배열에서 단일 항목의 결과를 얻을, 모든 타임 스탬프를 얻을 vqts 배열의 각 VQT에 대한 멤버입니다.

하나의 문장을 과도하게 사용하고 싶습니까? 나중에, 타임 스탬프는 이러한 방식으로 사용됩니다 발전기가 적합 할 경우

vqts_to_write = [vqt for vqt in resampled_vqts if not vqt.TimeStamp in tag_timestamps] 

내가 정말 그들을 통해 반복하고 있지 않다 이후, 난 그냥 모든 모든 타임 스탬프의 목록을 원하는 확실하지 않다 이 항목/태그에 대한 항목 결과를 표시하여 목록의 멤버십을 테스트 할 수 있습니다.

내 스크립트의 여러 상황에 대해이 작업을 여러 번해야하므로 효율적이고 파이썬적인 방식으로이 작업을 수행하는지 궁금합니다. 나는이 방법을 리펙토링하여, 더 쉽게 만드는 것에 대해 생각하게했다.

FYI는 numpy, pandas 등을 사용할 수없는 고정 환경에 포함 된 IronPython 2.6입니다. Python 2.6 전용 솔루션이 필요하다고 가정하는 것이 안전합니다.

내 주요 질문은 :

겠습니까 가능하면 코드를 난독, 한 줄에이 붕괴?

붕괴가 적절하면 방법이 과포화 될 수 있습니까?

2 개! 두 가지 주요 질문은 다음과 같습니다.

가능한 한 코드를 난독 처리합니까?

붕괴가 적절하면 방법이 과포화 될 수 있습니까?

목록의 구성원 자격을 테스트하는 데 적절한 생성기가 있습니까?

3 명! 나의 세 가지 질문은 ... 내가 다시 올거야 ... 나의 질문 같은 다양한 질의가 사이에 ...

(이것은 파이썬은 ...)

답변

1

tag_results = [...][0]새로운 목록을 작성 한 항목 만 가져 오기. 이 발전기의 발현에 next()가 무엇인지입니다 : 충분한만을 반복은 첫 번째 항목을 얻을

next(item_result for item_result in results.ItemResults if item_result.ItemId == tag_id) 

.

당신은 수 있습니다. 인라인입니다. 그러나 나는 그것을 읽기 쉽도록 별도의 표현으로 유지할 것입니다.

나머지는 쉽게 하나 개의 표현에 넣고 :

tag_results = next(item_result for item_result in results.ItemResults 
        if item_result.ItemId == tag_id) 
tag_timestamps = [vqt.TimeStamp for vqt in tag_results.VQTs] 

만 회원 테스트 할 필요가 있다면이 를 설정하는 것이 할 것 :

tag_timestamps = set(vqt.TimeStamp for vqt in tag_results.VQTs) 

설정이 일정 시간 동안 허용을 회원 테스트; 목록에 대한 테스트는 전체 목록이 각 테스트마다 스캔 될 수 있으므로 선형 시간이 걸립니다.

+1

우수한 정보! 나는 표준 라이브러리에 대해 서서히 느낀다.하지만 내가 필요로 할 때마다 문서를 무작위로 찾거나 내가 몇 달 전에 본 온라인 비디오에서 몇 분을 기억하지 않는 한, 내가 그들을 놓을 때까지 나는 잊어 버린다. 실제로. 이것이 내가 필요한 정보였습니다. 필자는 불변 목록에 대해서도'frozenset'라고 지적했다. 고맙습니다! – noelhx