[python] list comprehension

써니·2022년 5월 11일
0

Python

목록 보기
7/9

0. comprehension : "~~~ for _ in ~~"

  • comprehension : 코드 한줄로 원하는 조건을 충족하는 자료구조 만들기
  • 가능한 자료구조 : list, tuple, set, dict

1. without comprehension

orig = [1,2,3,4,5,6]
evens = []

for i in orig :
	if (i%2 == 0):
    	evens.append(i)
print(evens)

2. with list comprehension

[ (변수 or 변수활용값) for (사용할변수이름) in (순회할_수_있는_값) ]

ex1)

orig = [1,2,3,4,5,6]
evens = [i for i in orig if i%2 == 0]

# even10 = [i*10 for i in orig if i%2 ==0]

ex2) using range

arr = [n for n in range(1, 11) if n%2==0]

3. multiple conditions

1) AND 연산

arr = [n for n in range(1, 11) if n%2==0 if n%3==0]

명시적으로 "AND" statement 작성 시 SyntaxError 발생

2) OR 연산 - 1개의 if 문에서 'or'연산자로 묶어서 처리

arr = [n for n in range(1, 11) if n%2==0 or n%3==0]

명시적으로 "OR" statement 작성 시 SyntaxError 발생

4. Uses

arr = [[1, 2, 3], 
       [4, 5, 6],
       [7, 8, 9],
       [10, 11, 12],
      ]

1. 1차원 list로 바꾸기

flat = [i for row in arr for i in row ]

# equivalent to nested for loop
flat = []
for row in arr:
	for i in row :
    	flat.append(i)

2. 조작 : [ "부분" for row in arr ] => 부분을 치환해서 활용

squared = [ [n ** 2 for n in row] for row in arr ]
#[[1, 4, 9], [16, 25, 36], [49, 64, 81], [100, 121, 144]]












출처/참고 :

0개의 댓글