반응형

파이썬 기본 문법 - Comprehension 컴프리핸션

 

Comprehension 이란

반복되거나 특정 조건을 만족하는 리스트를 보다 쉽게 만들어 내기 위한 방법입니다.

 

예제 1 - Comprehension 미적용 / 적용 비교

# Case 1) Comprehension 미적용
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
data1 = []
for i in range(11):
    data1.append(i)
print(data1)

# Case 2) Comprehension 적용
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
data2 = [i for i in range(11)]
print(data2)

예제 2 - Comprehension 적용 - 조건문 추가

#Case 3) Comprehension 적용 - 조건문 추가
# 짝수인 경우, 그대로 들어가고 홀수인 경우 x 10 이 들어감
# [0, 10, 2, 30, 4, 50, 6, 70, 8, 90, 10]
data3 = [i if i % 2 == 0 else i*10 for i in range(11)]
print(data3)

예제 3 - Comprehension 적용 - 중첩 반복문

#Case 4) Comprehension 적용 - 중첩 반복문
# ['ha', 'hn', 'hd', 'ea', 'en', 'ed', 'la', 'ln', 'ld', 'la', 'ln', 'ld', 'oa', 'on', 'od']
str1 = 'hello'
str2 = 'and'
data4 = [i + j for i in str1 for j in str2]
print(data4)

예제 4 - Comprehension 미적용/적용 - enumerate

#Case 5) Comprehension 미적용 - enumerate 사용
data5 = [10,30,20,50,70,40]
for index, value in enumerate(data5):
    print(index, value)

#Case 6) Comprehension 적용 - enumerate 사용
str = 'it is a good day'
data6 = {i : v for i, v in enumerate(str.split())}
#{0: 'it', 1: 'is', 2: 'a', 3: 'good', 4: 'day'}
print(data6)

예제 5 - Comprehension 미적용/적용 - zip

#Case 6) Comprehension 미적용 - zip 사용
data7_1 = ['lee', 'choi', 'kim', 'ch']
data7_2 = [10, 30, 60, 90]
for l1, l2 in zip(data7_1, data7_2):
    print(l1, l2)

#Case 7) Comprehension 적용 - zip 사용
data7 = {k : v for k, v in zip(data7_1, data7_2)}
print(data7)

반응형
반응형

파이썬 기본 문법 - lambda 익명함수

 

lambda 함수란

lambda는 익명함수라는 이름처럼 함수의 이름을 지정하지 않으며, 결과부분된 부분을 return키워드 없이 자동으로 return해줍니다.

lambda의 장점은 코드의 간결함 메모리의 절약이라고 생각할 수 있습니다.

예제1

sum = lambda a,b:a+b
print(sum(1,2))

data1 = ['hello', 'banana', 'day']
data1.sort(key=lambda sv:sv[0])
print(data1)

data2 = [1,2,3,4,5]
print(list(map(lambda d : d*10, data2)))

예제2

listdata = ['democratic', 'sequoia', 'equals','brrr','break','two']

# 문자열의 갯수를 기준으로 정렬
listdata.sort(key= lambda x: len(x))
print(listdata)
 
# 문자열의 마지막 문자를 기준으로 정렬
listdata.sort(key= lambda x: x[-1])
print(listdata)

반응형
반응형

파이썬 기본 문법 - Generator(제네레이터) - yield

 

Generator란

iterator를 생성해주는 함수로 함수안에 yield 키워드를 사용합니다. 
return은 함수를 종료를 시키지만, yield는 값을 반환하지만 종료시키지 않고 대기합니다. 
무한한 순서가 있는 객체를 모델링할 수 있습니다. 

 

예제

def generator(start, end):
    current = start
    while current < end:
        yield current
        current += 1

for i in generator(3,7):
    print(i)

반응형
반응형

파이썬 기본 문법 - range() 함수

 

range() 함수란

for문은 숫자 리스트를 자동으로 만들어 주는 함수로써, for 문을 사용할 때 이용합니다.

함께 사용하는 경우가 많다. 

 

시작 숫자와 끝 숫자를 지정하려면 range(시작 숫자, 끝 숫자, 증가분) 형태를 사용합니다. 

시작 숫자와 증가분은 생략 가능합니다. 

시작 숫자의 default는 0이고, 증가분의 default는 1입니다. 

 

range(10) => 0부터 10 미만의 숫자를 포함하는 range 객체를 만들어 줍니다. 

range(1, 10) => 1부터 10 미만의 숫자를 포함하는 range 객체를 만들어 줍니다. 

range(1, 10, 2) => 1부터 10 미만의 숫자를 2 증가분으로 하는 range 객체를 만들어 줍니다. 

 

print("case 1 => ")
for i in range(5):
    print(i)
print("case 2 => ")
for i in range(1,5):
    print(i)
print("case 3 => ")
for i in range(1,5,2):
    print(i)
print("case 4 => ")
for i in range(5,-1,-1):
    print(i)

__iter__() 함수, __next__() 함수

Range 객체의 __iter__() 함수는 iterator를 반환해줍니다. 

Range 객체의__next__() 함수는 다음 포인터의 값을 반환해줍니다. 

__next__() 를 call 할 때, 지정해준 range 범위를 넘어서면 error가 발생합니다. 

 

iter1 = range(3).__iter__()

print(iter1.__next__())
print(iter1.__next__())
print(iter1.__next__())
print(iter1.__next__())

 

반응형

+ Recent posts