Facebook Api를 뜯어보다가 아래와 같은 구문이 있었습니다.
params['fields'].extend(field for field in fields if field not in params['fields'])
위의 구문에서 field for field in fields if field not in params['fields'] 부분은 list comprehension으로 python의 list를 간결하게 만들어주는 부분입니다.
list comprehension의 사용법은 아래와 같습니다.
[<expression> for <value> in <list> if <condition>]
list 안의 value가 조건에 맞으면 표현식을 적용합니다. 따라서, field for field in fields if field not in params['fields'] 구문은 field가 params['field']안에 포함되지 않으면 field를 그대로 사용하겠다는 것입니다.
다음으로, extend는 a 리스트에 b 리스트 각각의 요소를 추가해주는 것입니다.
append와의 차이점을 살펴보면 명확합니다.
a = ["a", "b", "c"], b = ["d", "e", "f"]
a.append(b)를 하면 결과값은 ["a", "b", "c", ["d", "e", "f"]]
a.extend(b)를 하면 결과값은 ["a", "b", "c", "d", "e", "f"]