예제를 통해 리스트 함축을 알아봅시다.
앞과 뒤가 같은 문자열의 개수를 세야하는 상황이 주어졌을 때, 리스트 함축을 모르는 상태일 때는 다음처럼 작성할 것임
lst=['aba','xyz','abc','121','789']
cnt=0
for i in lst:
if(i[0]==i[-1]):
cnt+=1
print('앞과 뒤가 같은 문자열 개수: ',cnt)
만약 리스트 함축을 안다면 다음과 같이 사용할 수 있음
lst1=['aba','xyz','abc','121']
lst2=[w for w in lst1 if(w[0]==w[-1])]
print('앞과 뒤가 같은 문자열 개수: ',len(lst2))
위 코드처럼 리스트의 안에 for문과 if문을 작성할 수 있음
위 코드를 설명하겠음
먼저 w라는 변수가 리스트에 추가될 건데, 그 w는 lst1이라는 리스트의 요소임
근데 lst1의 요소가 모두 추가되는건 아니고 조건문에 의해서 문자열의 첫글자와 마지막 글자가 같은 경우만 추가됨
리스트에 추가될 변수는 제일 앞에 위치하고 그 변수는 반복문의 변수에 의해 정해짐
그리고 조건문은 일반적으로 반복문의 뒤에 적음
if else를 쓸때는 조건문이 앞으로 옴
다른 예시를 보겠음
첫번째 리스트에 1~10의 정수가 저장되어있음. 이때 첫번째 리스트의 요소 중 3~8만 음수로 바꾸고 싶다면 어떻게 해결할까 생각해보셈
먼저 리스트 함축을 모르는 상태라면 아래처럼 작성할 것임
lst1 = [i for i in range(1,11)]
lst2=[]
for i in lst1:
if(3<=i<=8):
lst2.append(-i)
print(lst1)
print(lst2)
다음은 리스트 함축을 사용하여 작성한 것임
lst1 = [i for i in range(1, 11)]
lst2 = [-i if 3 <= i <= 8 else i for i in lst1]
print(lst1)
print(lst2)
lst2의 리스트 함축을 사용한 것을 설명하면
3<=i<=8 일때, -i를 리스트에 추가하고 아니라면 i를 추가할거임
근데 그 i는 lst의 요소임( for문에 의해서 lst1의 요소가 순서대로 들어갈거임)
'Python' 카테고리의 다른 글
Python; 리스트로 간단한 극장 예약 구현하기 (1) | 2024.06.09 |
---|---|
Python; 리스트 함축으로 공통 요소 추출하기 (0) | 2024.06.09 |
Python; 터틀그래픽 10개의 랜덤한 원 그리기 (2) | 2024.05.21 |
python; PI(파이) 근사값 구하기 (몬테카를로) (4) | 2024.05.20 |
python; 정적분을 활용하여 원뿔대 부피 구하기 (0) | 2023.03.01 |
댓글