Create TOC

2006년 4월 17일

Python/숫자 세 자리마다 콤마 찍기

간단하게

  1. 뒤에서 부터 3자리씩 끊는다.
  2. 사이사이 ','를 넣어서 합친다.

def foo(num) :
    # num을 문자열로 만들어서 뒤집는다. num이 1234이면 a는 '4321'
    a = str(num)[::-1]
    # a를 가지고 (index, a[index]) 의 iter 를 만든다.
    # 그리고  index > 0 and index % 3 == 0 일때 a[index] 뒤에 ','를 붙인 list를 만든다.
    # b = ['4', '3', '2', '1,'] 형태가 된다.
    b = [c + ',' if (i and (i % 3 == 0)) else c for i, c in enumerate(a)]
    # 뒤집어진 문자열로 작업했기 때문에 다시 뒤집는다.
    b = b[::-1]
    # 문자열로 합쳐서 결과를 돌려준다.
    return string.join(b, '').replace('-,', '-')

한줄로 정리하면

def foo2(num) :
    return string.join([c + ',' if (i and (i % 3 == 0)) else c for i, c in enumerate(str(num)[::-1])][::-1], '').replace('-,', '-')