['진달래꽃\n', '나 보기가 역겨워\n', '가실 때에는\n', '말없이 고이 보내드리 오리다.']를
['진달래꽃', '나 보기가 역겨워', '가실 때에는', '말없이 고이 보내드리오리다.'] 이렇게 나타내고 싶었다.
존재하는 '\n'를 다 지우고 싶었던 건데
lineAry = ['진달래꽃\n', '나 보기가 역겨워\n', '가실 때에는\n', '말없이 고이 보내드리 오리다.']
res=[]
for line in lineAry:
line = line.replace('\n','')
res.append(line)
print(res)
print(lineAry)
위처럼 replace('\n','')을 쓰고나서 append()로 이어주니 원하는 결과가 나왔다.
근데 이때 새롭게 알게 된 게 있다.
lineAry = ['진달래꽃\n', '나 보기가 역겨워\n', '가실 때에는\n', '말없이 고이 보내드리 오리다.']
res=[]
for line in lineAry:
line = line.replace('\n','')
res+=line
print(res)
print(lineAry)
+= 와 append()의 동작이 다르다는 것이다.
res+=line도 res.append(line)와 같은 동작을 할 줄 알았는데
res+=line을 거친 코드의 출력값은
['진', '달', '래', '꽃', '나', ' ', '보', '기', '가', ' ', '역', '겨', '워', '가', '실', ' ', '때', '에', '는', '말', '없', '이', ' ', '고', '이', ' ', '보', '내', '드', '리', '오', '리', '다', '.']
애초에 lineAry의 원소는 4개니까 for문은 4번 수행돼야 하고, res에 line도 한 줄씩 4번 추가되어야 하는 거 아닌가? 왜 line이 lineAry의 원소의 원소화 되어서 1차원 리스트로 쓰이는 거지?
바드한테 물어봤더니, "+= 연산자는 리스트의 끝에 다른 리스트를 연결하는 기능을 하므로, 리스트의 원소를 추가하려면 append() 메서드를 사용하는 것이 좋습니다."라고 하는데...
딱히 이해가 가질 않는다... 아직은 이해를 못한 상태다. 그냥 +=를 주의해서 써야겠구나 정도.
(231020)
하루 뒤인 오늘,
res+=[line]로 쓰면 res.append(line)와 같은 결과를 출력함을 알았다.
+=할 때는 형식을 맞춰줘야 하는구나.