나는 최단 경로를 계산하기 위해 dijkstras 알고리즘을 구현 중입니다. 제 질문은 다음과 같은 이해를 구현하는 명확한 방법이있는 경우입니다 (즉, if [b for a,b in G[x] if a not in X]!=[]]
이 끝까지 붙지 않은 경우).파이썬 : 이해 내에서 빈 목록을 제거하십시오
아래에서 G는 키가 그래프 노드이고 각 노드가 연결 가장자리를 나타내는 튜플 목록을 가지고있는 그래프입니다. 따라서 각 튜플에는 정보가 포함됩니다 (연결된 노드, 연결된 노드까지의 거리). X는 알고리즘이 이미 조사한 노드 집합이고, A는 시작 노드 (이 경우 노드 1)에서 이미 발견 된 노드를 사전에 매핑하는 사전입니다.
업데이트 : 미안 나는 작동하는 예를 들었는데, 이해력의 마지막 부분이 제거되면 작동하지 않는 것이 여기있다.
G = {1: [(2, 20), (3, 50)], 2: [(3, 10), (1, 32)], 3: [(2, 30), (4, 10)], 4: [(1, 60)]}
X = {1,2,3}
A = {1: 0, 2: 20, 3:30}
mindist = min([A[x] + min([b for a,b in G[x] if a not in X]) for x in X if [b for a,b in G[x] if a not in X]!=[]])
질문은 min([[],[some number],[])
을 다룰 수있는 이해력으로 어떻게 정신 주의자를 쓰는가입니다.
마지막 부분
, 나던 실패 분 있도록if [b for a,b in G[x] if a not in X]!=[]]
그냥 빈 목록을 제거하지만 거기는 빈리스트가 없기 때문에 그 이해를 작성하는 더 좋은 방법입니다.
빈 목록은 False로 평가됩니다. –