Python/Python Basic Lesson

Python Programming Basic - Append. 리스트 축약 (List Comprehensions)

Pydole 2020. 3. 2. 20:42

 

 

리스트 객체를 이용하여 조합, 필터링 등의 추가적인 연산을 통하여 새로운 리스트 객체를 생성하는 경우, 리스트 내장은 매우 효율적이다.

 

 

 <표현식> for <아이템> in <시퀀스 타입 객체> (if <조건식>) 

 

- 시퀀스 타입 객체 : 리스트, 튜플, 셋

- 아이템 : 리스트 객체의 개별 아이템

- 표현식 : 개별 <아이템>을 사용하여 사상함수 형태로 새로운 리스트 객체를 생성

- if 조건식 : 조건식에 맞는 원본 리스트의 아이템을 선별하는 경우. 생략가능

 


 

 

 

# [  0, 1, 2, 3, 4 ] 요소 가진 리스트 만들기 (일반적인 문법)


lst = []

for i in range(5):
    lst.append(i)

print(lst)



[0, 1, 2, 3, 4]

 

# List Comprehensions을 이용한 방법


lst = [ i for i in range(5) ]
print(lst)


[0, 1, 2, 3, 4]

 

 

 

 

 

 

# [ 0, 2, 4, 6, 8 ] 요소 가진 리스트 만들기 (일반적인 문법)


lst = []

for i in range(5):
    i = i * 2
    lst.append(i)

print(lst)


[0, 2, 4, 6, 8]

 

# List Comprehensions을 이용한 방법


lst = [ i * 2 for i in range(5) ]
print(lst)



[0, 2, 4, 6, 8]

 

 

 

 

 

# 이중 For문

nums = [1, 2, 3, 4]
fruit = ["Apples", "Peaches", "Pears", "Bananas"]

print([(i, f) for i in nums for f in fruit])




[(1, 'Apples'), (1, 'Peaches'), (1, 'Pears'), (1, 'Bananas'),
 (2, 'Apples'), (2, 'Peaches'), (2, 'Pears'), (2, 'Bananas'),
 (3, 'Apples'), (3, 'Peaches'), (3, 'Pears'), (3, 'Bananas'),
 (4, 'Apples'), (4, 'Peaches'), (4, 'Pears'), (4, 'Bananas')]

 

 

 

# 이중 for문과 조건식

nums = [1, 2, 3, 4]
fruit = ["Apples", "Peaches", "Pears", "Bananas"]


print([(i, f) for i in nums for f in fruit])

[(1, 'Apples'), (1, 'Peaches'), (1, 'Pears'), (1, 'Bananas'),
 (2, 'Apples'), (2, 'Peaches'), (2, 'Pears'), (2, 'Bananas'),
 (3, 'Apples'), (3, 'Peaches'), (3, 'Pears'), (3, 'Bananas'),
 (4, 'Apples'), (4, 'Peaches'), (4, 'Pears'), (4, 'Bananas')]



print([(i, f) for i in nums for f in fruit if f[0] == "P"])

[(1, 'Peaches'), (1, 'Pears'), (2, 'Peaches'), (2, 'Pears'),
 (3, 'Peaches'), (3, 'Pears'), (4, 'Peaches'), (4, 'Pears')]

 

 

 

# list comprehension (리스트축약) if 문 사용법

[ "참값" if 조건 else "거짓값" for 변수 in [리스트|튜플|문자열] ]



# 리스트 / 튜플

lst = [ 1, -1, 2, -1, -3, 4, 1 ]

lst = [ '양수' if x > 0 else '음수' for x  in lst ]

print(lst)


['양수', '음수', '양수', '음수', '음수', '양수', '양수']



# 문자열

lst = [ '대문자' if x.isupper()  else '소문자' for x in 'AbCDdfd' ]

print(lst)


['대문자', '소문자', '대문자', '대문자', '소문자', '소문자', '소문자']