2011-10-08 2 views
3

키가 사전에 없으면 사전에서 get (key)를 호출하면 기본적으로 None이 반환됩니다. 리스트가 적어도 전달 된 인덱스의 크기 일 경우 요소가 리턴되고, 그렇지 않으면 None이 리턴되는 것과 같이리스트의 관용적 표현은 무엇입니까? 목록에 대해 get()과 관용적 인 python 등가물은 무엇입니까?

이 기능의 더 관용적/컴팩트 버전 무엇을, 바꿔하려면

def get(l, i): 
    if i < len(l): 
     return l[i] 
    else: 
     return None 
+1

, 나는'defaultdict' 대신()'dict.get'의 사용, 당신은 당신의 사용 사례와'defaultlist'뿐만 아니라, 경우에 더 잘 맞는 가지고 올 수 있습니다. –

+2

왜 이것이 필요하다고 생각하십니까? 목록 색인은 일반적으로 추측하는 것이 아닙니다. 다른 말로 표현하면; 목록은 일반적으로 모든 요소에 조치를 적용하는 방식으로 사용됩니다. 고유 요소 (존재하는 경우)가 아닌 고유 한 요소가 있어야합니다. 비정상적으로 목록을 사용하고있는 것 같습니다 (아마도 클래스가 더 좋을까요?) – SingleNegationElimination

답변

3

당신이 다음 사용 l[i] 종종 존재하지 않을 것으로 예상되는 경우 :

def get(l,i): 
    return l[i] if i<len(l) else None 

당신이 l[i] 거의 항상 존재하고 사용할 것으로 예상되는 경우 try...except :

def get(l,i): 
    try: 
     return l[i] 
    except IndexError: 
     return None 

이유 : try...except은 예외가 발생하면 비용이 많이 들지만 그렇지 않은 경우에는 비용이 많이 듭니다. 대부분의 경우

+1

'if i JBernardo