2016-06-14 4 views
-4

문자열 목록의 각 요소의 부분 문자열과 다른 문자열 목록의 요소를 비교하는 루프가 for입니다.for 루프를 목록 이해로 변환

mylist = [] 
for x in list1: 
    mat = False 
    for y in list2: 
     if x[:-14] in y: 
      mat = True 
    if not mat: 
     mylist.append(x) 

그러나 나는 (루프 내 취향에 대한 간결하지 않은 경우) 지능형리스트에 넣어 싶습니다 그러나 mat의 계산으로 할 수있는 방법을 찾을 수 없습니다.

나는에 변화를 시도했다 :

mylist = [x for x in list1 if x[:-14] in list2] 

그러나 이것은 원래 루프와 같은 논리가 아닙니다. 원래 for 루프를 목록 이해로 개편 할 수있는 방법이 있습니까?

+4

아니오 :

mylist = [] for x in list1: if not any((x[:-14] in y) for y in list2): mylist.append(x) 

은 이제 변환 꽤 정직 , 이것은 전환 서비스가 아닙니다. 너 자신을 시도하고 어딘가에서 붙어 있다면, [mcve]를 제공해주세요. 또한 모든 for 루프가 목록 내포가 될 수 없다는 점에 유의하십시오. – jonrsharpe

+1

메타 정보가 질문에 속해 있지 않아서 사람들이 답을 줄 수도 있지만 대답을 줄 수도 있기 때문에 머리말을 편집했습니다. 전혀 그렇지 않습니다. * "명백한 질문은 질문이므로 광범위한 문제에 적용 할 수 있습니다."* ** 당신이 한 가지 예를 그대로 변환하도록 요청했습니다 **. 혼자 힘으로 노력하지 않아도됩니다. 대신에. – jonrsharpe

+0

내가이 사이트에서 시도한 다른 모든 것에 대한 링크를 제공 하시겠습니까? 그것은 귀하의 진술 금액 것입니다. 이것은 질문에 대답하기 위해 취하는 것보다 제가 시도한 것을 증명하는 데 더 많은 노력을 기울이는 간단한 질문입니다. 아주 불합리한 반응 ... 나는 아마도 적어도 30 분 동안 검색을 시도하고 게시하기 전에 노력했다. – user3496060

답변

2

을? :.

그러나 계산식을 mat으로 다시 작성하면 단일식이됩니다. (이 경우, 당신은 any을 사용)

mylist = [] 
for x in list1: 
    mat = any((x[:-14] in y) for y in list2) 
    if not mat: 
     mylist.append(x) 

그런 다음 if not 상태로 직접 그 정의를 이동 :

mylist = [x for x in list1 if not any((x[:-14] in y) for y in list2)] 
+0

친구, 질문의 요점을 읽고 for 루프에서 목록 이해로 변환하는 방법을 포함하는 간결한 대답을 제공했습니다. 방금 해보았고 위대한 일을했습니다. 신앙은 = 회복되었습니다! – user3496060

+1

@ user3496060 예를 통해 배워야 할 것이 명확하므로 예제를 배우기를 원했기 때문에 귀하의 신앙을 회복 해 주셔서 대단히 감사합니다. (원본은 매우 현지화되어 있으며 향후 시청자를 도울 가능성이 거의 없음) 나는 그것이 당신에게 당신의 믿음을 다시 잃지 않도록 더 잘받을 수있는 종류의 질문에 대한 더 나은 생각을 줄 수 있기를 바랍니다! –

-1

는이 같은 뭔가를 찾고있는 기록 된 것처럼, 아니 직접 지능형리스트로 쓸 수 없습니다

mylist = [x for x in list1 if x[:-14] not in list2] 
+0

yea 나는 게시하기 전에 이것을 시험해 보았습니다 (다른 예를 찾아 냈습니다). – user3496060

관련 문제