2017-11-11 1 views
0

안녕하세요 화요일 Python 수업에 대한 시험을 검토 중이며 2 가지 목록에서 동일한 항목/값을 가진 프로그램이 다른 순서로 있는지 확인하는 프로그램을 만들려고합니다. 여전히 위의 문에 진정한 인쇄 어떤 이유비교 프로그램이 작동하지 않는 이유는 무엇입니까?

def reOrder(list1, list2): 
    if len(list1) != len(list2): 
     return False 
    for element1 in list1: 
     foundElement = False 
     for element2 in list2: 
      if element1 == element2: 
       foundElement = True 
     if foundElement == False: 
      return False 
     else: 
      return True 


print(reOrder([1,7,10,8,4,2], [3,1,8,10,2,4])) 

:

이것은 내가 지금까지있는 것입니다. 이 문제를 어떻게 해결할 수 있을지에 대한 아이디어가 있습니까? 나는이이 작전에서 그것을 할 것이라고 생각

+2

당신이 uncoditionally 외부 루프의 첫 번째 반복에서'TRUE '또는'FALSE '를 반환합니다 – Himanshu

+1

목록 1의 모든 요소를 ​​점검 할 때까지 당신은 true를 돌려주지해야한다. 디버거를 사용하여 코드를 단계별로 실행하는 방법을 배우려면 간단히 코드를 읽는 것보다 코드를 훨씬 명확하게 이해해야합니다. –

+0

잘 그게 첫 번째 값 '1' 자체를 반환하기 때문에 함수가 완료되지 않습니다 반환 사실을 제거하고 마지막으로 –

답변

0

우리 때문에 목록에 값 True을 반환 목록 및 검사 모두에서 1을 비교하여 그 진리와 return True는 다음 값 7 등 및 기능을 확인하지 않습니다 유효성을 검사 게시 return True 문이 그래서를 제거하고 두 개의 루프의 끝 부분에 배치의 보증 때문에 목록 요소의 나머지 부분을 계속 실행하지 않도록하여 True 경우 결과

def reOrder(list1, list2): 
    if len(list1) != len(list2): 
     return False 
    for element1 in list1: 
     foundElement = False 
     for element2 in list2: 
      if element1 ==element2: 
       foundElement=True 
     if foundElement ==False: 
      return False  
    return True 
print(reOrder([1,3,10,8,4,2], [3,1,8,10,2,4])) 
로 반환됩니다 모든 조건을 확인 후

OUTPUT

,363,210
False 

난 (N * logn)이 코드로는 (N2) O3 명확 O로 줄일 복잡도와 대응하는 요소를 확인 후 두리스트를 정렬 및 선호는

+0

변경된 기능을 원본에서 볼 수없고 변경 사항에 대한 설명을 제공하지 못했습니다. . – roganjosh

+0

위의 pls 다시 확인 죄송합니다 –

+0

고마워요이 일을 끝냈어 –

0

기본적인 아이디어는 경우 그 두리스트는 같은 요소를 가지고 있고 두 번째리스트의 모든 요소는 첫 번째리스트에 있어야하고 그 반대도 마찬가지입니다. List2의 한 요소라도 list1에 없으면 두 목록이 동일하지 않습니다.

def reOrder(list1,list2): 
Found = False 
if len(list1)!=len(list2): 
    return False 
for e in list2: 
    if e not in list1: 
     return False 
return True  
print(reOrder([1,7,10,8,4,2], [3,1,8,10,2,4])) 
관련 문제