본문 바로가기
Dev/🐍 Python

[Python] List Comprehension

by 아아덕후 2022. 5. 3.
반응형

List Comprehension

  • 리스트 컴프리헨션은 간단하게 새로운 리스트를 만드는 방법이다.
  • 리스트와 for문을 한 줄에 사용할 수 잇는 장점이 있다.

List Compregension의 장점

  • 1) 문법적 간단함
  • 2) 런타임 시간이 더 짧다. -> 효율적인 연산을 사용한다.

append를 사용하지 않고 훨씬 더 간결하게 표현이 가능하다!

result = []
for i in range(10):
    result.append(i)
    
print(result)

[out]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
result = [i for i in range(10)]
print(result)

[out]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

이처럼 3줄의 코드를 1줄로 함축하여 포괄할 수 있다.

 


리스트 컴프리헨션문 끝에 조건문을 삽입하는 것도 가능하다!

result = []
for i in range(10):
    if i%2 == 1:
        result.append(i)
        
result

[out]
[1, 3, 5, 7, 9]
result = [i for i in range(10) if i%2 ==1]
result

[out]
[1, 3, 5, 7, 9]

 


result = []
for i in range(10):
    if i%3 == 1:
        result.append(i)
    elif i%3 == 2:
        result.append(i*10)
    else:
        result.append(i*100)
        
result

[out]
[0, 1, 20, 300, 4, 50, 600, 7, 80, 900]

 

result = [i if i%3 == 1 else i*10 if i%3 == 2 else i*100 for i in range(10)]
result

[out]

[0, 1, 20, 300, 4, 50, 600, 7, 80, 900]

if - elif- else 구문 + for문도 가능하다

 


alp_num1 : zip을 통한 for문
alp_num2 : 중첩 for문의 리스트 컴프리헨션
alp_num3 : 이차원 리스트 코드의 리스트 컴프리헨션이다.

alp = ['x', 'y', 'z']
num = ['1','2','3']

alp_num1 = [ a+n for a,n in zip(alp,num)]

alp_num2 = [a+n for a in alp for n in num]

alp_num3 = [[a+n for a in alp] for n in num]

print(alp_num1)
print(alp_num2)
print(alp_num3)

[out]
['x1', 'y2', 'z3']
['x1', 'x2', 'x3', 'y1', 'y2', 'y3', 'z1', 'z2', 'z3']
[['x1', 'y1', 'z1'], ['x2', 'y2', 'z2'], ['x3', 'y3', 'z3']]

 

 

split() : 문자열을 리스트형으로!
split('o') : 문자 'o'를 기준으로 나누어서 list (이때 해당 문자는 포함되지 않음)

 

' '.join() : 리스트를 문자열로!

  • join 앞에 문자열을 입력하면,
  • 리스트 요소 사이에 특정 문자열을 붙여 연결한다
word1 = 'Good Morning World!'
print(word1)
split_by_null = word1.split()
split_by_o = word1.split('o')
print(split_by_null)
print(split_by_o)

[out]
Good Morning World!
['Good', 'Morning', 'World!']
['G', '', 'd M', 'rning W', 'rld!']



word2 = 'hello'
join_null = ''.join(split_by_null)
join_space = ' '.join(split_by_null)
print(join_null)
print(join_space)

[out]
GoodMorningWorld!
Good Morning World!

 

 

 

 

 

 

반응형

댓글