for 반복문으로 변수를 새로 넣고 있는데 안됩니다

조회수 444회
ICN_CEIL15 = soup.select_one('table:nth-child(2) > tbody > tr:nth-child(2) > td:nth-child(1) > table > tbody > tr:nth-child(4) > td').text + "'"
ICN_CEIL33 = soup.select_one('table:nth-child(2) > tbody > tr:nth-child(2) > td:nth-child(6) > table > tbody > tr:nth-child(4) > td').text + "'"
ICN_CEIL16 = soup.select_one('table:nth-child(6) > tbody > tr:nth-child(2) > td:nth-child(1) > table > tbody > tr:nth-child(4) > td').text + "'"
ICN_CEIL34 = soup.select_one('table:nth-child(6) > tbody > tr:nth-child(2) > td:nth-child(6) > table > tbody > tr:nth-child(4) > td').text + "'"

ICN_CEILs = [ICN_CEIL15, ICN_CEIL33, ICN_CEIL16, ICN_CEIL34]

for i in ICN_CEILs:
    if i == "'":
        i = "U/S'"

for문으로 ICN_CEILs 에 있는 변수를 바꾸고 싶은데 변경이 안됩니다.

for 이전에 print(ICN_CEILs) 하면 ["NCD'", "NCD'", "'", "'"] 이렇게 나오고 오른쪽 끝 2개 값 (" ' ", " ' ")을 "U/S'"로 바꾸고 싶은데 바뀌어지지가 않습니다. 아무리봐도 뭐가 잘못된지 모르겠어요.

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    ifor 문 안에서 리스트 원소를 담기 위해서 잠시 만들어졌다가 사라지는 변수에요. 그래서 i 에 값을 넣어도(assign) 원래의 리스트의 값은 변하지 않죠.

    이렇게 할 수 있어요.

    
    for i in range(len(ICN_CEILs)):
        if ICN_CEILs[i] == "'":
            ICN_CEILs[i] = "US'"
    

    그런데, range(len(..)) 은 별로 안 예쁘고 번거로우니까 enumerate 을 쓰면 조금 더 간단해요.

    
    for i, ele in enumerate(ICN_CEILs):
        if ele == "'":
            ICN_CEILs[i] = "US'"
    

    이걸 다시 list comprehension 으로 바꾸면,

    ICN_CEILs = [  "US'" if ele == "'" else ele for ele in ICN_CEILs ]
    

    이렇게 할 수 있어요.

    • 정말 감사합니다!! 잘되네요!! ㅎㅎ 김지용 2020.9.9 23:37

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

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

(ಠ_ಠ)
(ಠ‿ಠ)