Python 문자열 리스트 구분자로 합치기 (join)

1 분 소요

for loop을 이용해서 코드를 작성하다보면 아래와 같은 상황을 종종 보게됩니다.

fruit_list = ['사과', '바나나', '멜론', '포도']

print('과일 목록: ', end='')
for fruit in fruit_list:
    print(fruit + ', ', end='')


# 출력
과일 목록: 사과, 바나나, 멜론, 포도,

콤마를 구분자로 리스트를 출력하고 싶은데, 출력 마지막 부분에도 구분자가 또 출력되면서 깔끔하게 출력되지 않습니다. 이를 정석으로 해결해보자면 아래와 같은 방법이 있을 수 있습니다.

fruit_list = ['사과', '바나나', '멜론', '포도']

print('과일 목록: ', end='')
for i, fruit in enumerate(fruit_list, start=1):
    if i < len(fruit_list):
        print(fruit + ', ', end='')
    else:
        print(fruit, end='')
        
        
# 출력
과일 목록: 사과, 바나나, 멜론, 포도

하지만 이렇게 작성하면 저 한 부분을 위해 코드가 상당히 지저분해집니다. Python에서는 이를 join으로 해결할 수 있습니다.

fruit_list = ['사과', '바나나', '멜론', '포도']

print('과일 목록: ' + ', '.join(fruit_list))


# 출력
과일 목록: 사과, 바나나, 멜론, 포도

맨 위의 코드보다 더 깔끔하게 작성하면서 원하는 출력 결과를 낼 수 있습니다. 이러한 부분은 DB 쿼리를 문자열로 작성할 때에도 활용할 수 있습니다.

column_list = ['name', 'age', 'gender']
and_condition = ['age > 15', 'gender="male"']

query = f"SELECT {', '.join(column_list)} FROM member " \
        f"WHERE {' AND '.join(and_condition)}"
print(query)


# 출력
SELECT name, age, gender FROM member WHERE age > 15 AND gender="male"

댓글남기기