2016-10-09 1 views
0

: 예를 들어한 줄의 파이썬 코드 나 특정 열에서 특정 문자열을 포함 목록의 모든 하위 목록 반환 할

:

List=[["2006ab","2005ac"],["2005ab","2004ac"],["2006ab","2005ac"],["2006ab","2003ac"],["2006ab","2005ac"]] 

검색 기준 : 두 번째 색인에서 부분 문자열 2005를 포함하는 모든 하위 목록을 반환합니다.

출력 :

[["2006ab","2005ac"],["2006ab","2005ac"],["2006ab","2005ac"]] 

나는 사용하여 시도 :

matching = [s for s in List if "2005" in s[1]] 

을하지만 반환

[["2006ab","2005ac"],["2005ab","2004ac"],["2006ab","2005ac"],["2006ab","2005ac"]] 
+0

예 사용할 수 있습니다하지만 내 의도가에서 2005있는 경우에만 모든 하위 목록을 반환하는 것입니다 BT는 2005 년뿐만 아니라 하위 목록의 인덱스 번째 0이 될 수 하위 목록의 첫 번째 색인입니다. –

+0

다시 실행하십시오. 코드에 아무런 문제가 없습니다. –

+0

코드가 정확한 결과를 제공합니다. '2005ab ','2005ac ','2006ab ','2005ac ','2006ab ','2005ac ']에''2005 년's [1] ]'. – MisterMiyagi

답변

1

귀하의 목록에있는 이해의 접근이 양호하고 정확한 결과를 제공합니다. 내게 맞는 결과물을 붙여 넣은 코드가 동일한 지 확인하십시오.

>>> List=[["2006ab","2005ac"],["2005ab","2004ac"],["2006ab","2005ac"],["2006ab","2003ac"],["2006ab","2005ac"]] 
>>> [sublist for sublist in List if '2005' in sublist[1]] 
[['2006ab', '2005ac'], ['2006ab', '2005ac'], ['2006ab', '2005ac']] 

이는 원하는 것과 동일합니다.

당신이 대안을 찾고 있다면, 당신은 filter()

>>> filter(lambda x: '2005' in x[1], List) 
[['2006ab', '2005ac'], ['2006ab', '2005ac'], ['2006ab', '2005ac']] 
+1

그 코드가's'를'sublist'로 대체 한 것과 같은 코드가 아닙니까? – MisterMiyagi

+0

이것은's'의 이름을'sublist'로 바꾸는 것 외에 OP의 코드와 다르지 않습니다. 당신의 대답은 무엇입니까? –

+0

답변이 업데이트되었습니다. 질문 형식이 올바르지 않았기 때문에 마지막 부분을 놓쳤습니다 –