2017-12-29 4 views
4

Python 초보자는 여기에 있습니다. mylist [x] [0]의 값을 기반으로 필터링하려고하는 목록의 목록을 가지고 있으며 각 결과 하위 목록에 인덱스 값을 추가합니다. 나는 다음과 같은 출력을 얻을한 줄로 된 목록에서 목록을 풉니 다

shortlist = [[x, mylist[x]] for x in range(1,20) if mylist[x][0] == 'TypeB'] 

: 다음 목록 comrehension을 감안할 때 이것은 내가 코드를 더 라인을 어떻게 든 풀어야 추측 하위 하위 목록을 생성

[[11, ['TypeB', 'Kline', '', '', 'Category']], 
[12, ['TypeB', '', '[Aa]bc', '', 'Category3']], 
[13, ['TypeB', '', '[Z]bc', '', 'Category']], 
[14, ['TypeB', '', 'Kline', '[Aa]bc', 'Category4']], 
[15, ['TypeB', '', '', '[Z]bc', 'Category']], 
[16, ['TypeB', '', '', 'Kline', 'Category5']], 
[17, ['TypeB', '[Aa]bc', '', '', 'Category']], 
[18, ['TypeB', '[Z]bc', '', '', 'Category2']], 
[19, ['TypeB', 'Kline', '', '', 'Category']]] 

을,하지만 난 좋겠 목록 작성을 바로 잡을 수 있다면 그렇게하지 마십시오. 내 목표는 첫 번째 줄을 읽는 것입니다.

[[11, 'TypeB', 'Kline', '', '', 'Category'], 

... 출력물의 나머지 부분을 따르십시오.

shortlist = [x, mylist[x] for x in range(1,20) if mylist[x][0] == 'TypeB'] 

shortlist = [x for x in range(1,20) if mylist[x][0] == 'TypeB', mylist[x] for x in range(1,20) if mylist[x][0] == 'TypeB'] 

모두에서 내 시도는 구문 오류를 제공합니다. 분명히 나는 ​​독해력을 열거하기 위해 새로운 사람이다. 나는 모든 입력과 안내를 중시한다. 시간 내 미리 감사드립니다. 당신의 출력으로 판단

답변

4

내부 목록을 연결해야합니다. 사용하는 파이썬의 버전에 따라이 작업을 수행 할 수있는 몇 가지 방법이 있습니다.

shortlist = [[x, *mylist[x]] for x in range(1,20) if mylist[x][0] == 'TypeB'] 

mylist[x]의 모든 값을 목록에 압축을 해제합니다. 아마도 가장 "pythonic" 방법이지만, python 3.5 up에서만 작동합니다.

shortlist = [[x] + mylist[x] for x in range(1,20) if mylist[x][0] == 'TypeB'] 

x 거기에있는 목록을 만든 다음 마지막에 mylist[x]을 추가합니다.

4

이 작동합니다 :

shortlist = [[x] + mylist[x] for x in range(1,20) if mylist[x][0] == 'TypeB'] 

[x, mylist[x]][11, ['TypeB', 'Kline', '', '', 'Category']]를 산출 할 때

x   -> 11 
mylist[x] -> ['TypeB', 'Kline', '', '', 'Category'] 

는 따라서, 당신은 목록에 x 랩과 함께 연결할 것인지 알고 다른.

+0

Brilliant! 감사합니다. – GJury

관련 문제