튜플값을 인트값을로 변경하려는데 궁금한점이 있습니다.

조회수 1928회
a = [('2019-05-01',),('2019-05-02',)....(n개)] #sqlite date tuple b값처럼 수정해야할 값
b = ((2019, 5, 1),(2019, 5, 2)....(n개)) #달력 년월일 tuple 고정값 변경 안됨
for i in range(len(a)):
    print(''.join(a[i]).replace('-', ','))

위에 a,b 값이 있는데 a값을 b값처럼 똑같이 만들려고합니다. 문제는 위에 값을 출력하면

2019,05,01
2019,05,02

나오는데 월 과 일 0값을 지워야하는데 `replace'로 지우면 년에있는 0값도 지워져 정규식을 사용해서 지운 후 튜플로 만들려고하니 ',' 때문에 int튜플로 묶을수가 없더군요 그래서 생각한게 년,월,일 을 따로 따로 변수3개 줘서 a = year, month, day 이런식으로 만들려고하는데 이것도 잘안되고 다른 좋은 방법을 도움 받고자 합니다.

2 답변

  • 좋아요

    1

    싫어요
    채택 취소하기
    a = [('2019-05-01',),('2019-05-02',),('2019-05-03',)]
    b = []
    
    for i in range(len(a)):
        temp = a[i][0].split("-")
        temp[1] = str(int(temp[1]))
        temp[2] = str(int(temp[2]))
    
        b = b + [(", ".join(temp),)]
    
    print(b)
    
    >>> 
    ======= RESTART: C:/Users/USER/Desktop/aaa.py =======
    [('2019, 5, 1',), ('2019, 5, 2',), ('2019, 5, 3',)]
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 정말정말 죄송합니다 질문을 잘못 올렸네요 ㅜㅜ b값이 문자값이 아니라 인트로 들어가야 하는걸 잘못 올렸습니다 정말 죄송합니다. 다크매터 2019.5.26 20:13
  • 윗분같이 하나씩 형변환을 해도 되지만 파이썬은 집합으로 즉 덩어리로 생각해서 프로그래밍하는 편이 더 간결하게 코드를 유지시켜 줍니다.

    d1 = '2019-05-01'
    y, m, d = map(int, d1.split('-'))    # 연월일 int 형변환후 변수에 대입
    tuple(map(int, d1.split('-'))    # int 형변환 결과를 바로 tuple 로 생성
    

    chain(*a) 는 a의 튜플을 벗겨내어 flatten 처리를 한겁니다.

    In [19]: a = [('2019-05-01',), ('2019-05-02',)]
    
    In [20]: list(chain(*a))                                                        
    Out[20]: ['2019-05-01', '2019-05-02']
    

    최종적으로 아래와 같이 작성할 수 있습니다.

    In [43]: from itertools import chain
    
    In [44]: a = [('2019-05-01',), ('2019-05-02',)]                                 
    
    In [45]: b = tuple(tuple(map(int, item.split('-'))) for item in chain(*a))      
    
    In [46]: b                                                                      
    Out[46]: ((2019, 5, 1), (2019, 5, 2))
    
    In [47]: [tuple(map(int, item.split('-'))) for item in chain(*d)]               
    Out[47]: [(2019, 5, 1), (2019, 5, 2)]
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)