일부 요소를 더 많은 요소로 확장해야하는 목록을 처리하는 "좋은"방법을 찾고 있습니다 (단 한 번만 결과에 확장이 없음).목록의 요소 확장하기
표준 반복적 인 방법은 어떻게하는 것입니다 :
i=0
while i < len(l):
if needs_expanding(l[i]):
new_is = expand(l[i])
l[i:i] = new_is
i += len(new_is)
else:
i += 1
꽤 추한이다. 다음과 같이 내용을 새 목록으로 다시 쓸 수 있습니다.
nl = []
for x in l:
if needs_expanding(x):
nl += expand(x)
else:
nl.append(x)
그러나 둘 다 너무 길게 보입니다. 또는 단순히 2 단계를 수행하고 나중에 목록을 평평하게 할 수 있습니다.
flatten(expand(x) if needs_expanding(x) else x for x in l)
# or
def try_expanding(x)....
flatten(try_expanding(x) for x in l)
그러나이 경우에도 "올바르게"느껴지지 않습니다.
다른 방법이 있습니까?
두 번째 버전은 충분히 명확하다고 생각합니다. – kennytm
@KennyTM : 나는 보통 마지막 것을 사용합니다. 다른 사람들이 실제 코드를 사용하고/사용하는 것을 편안하게 생각할 수있는 것을보고 싶었습니다. – viraptor