람다 형식은 인공지능 분야나 AutoCAD라는 설계 프로그램에서 쓰이는 Lisp 언어에서 물려받았다고 한다.

 

사용법

lambda(인자 : 표현식)

function으로

>>> def hap(x, y):

... return x + y

...

>>> hap(10, 20)

30

 

람다 형식으로

>>> (lambda x, y :  x + y)(10, 20)

30

map(함수, 리스트)

이 함수는 함수와 리스트를 인자로 받는다. 그리고, 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시킨 다음, 그 결과를 새로운 리스트에 담아준다.

>>> list(map(lambda x: x ** 2, range(5)))

[0, 1, 4, 9, 16]

 

reduce(함수, 순서형 자료)

순서형 자료(문자열, 리스트, 튜플)의 원소들을 누적적으로 함수에 적용시킨다.

>>> from functools import reduce

>>> reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])

10

 

filter(함수, 리스트)

리스트에 들어있는 원소들을 함수에 적용시켜서 결과가 참인 값들로 새로운 리스트를 만들어준다.

>>> list(filter(lambda x: x < 5, range(10)))

[0, 1, 2, 3, 4]


'Programming > Python' 카테고리의 다른 글

파일 입출력  (0) 2017.05.08
사용자 입출력  (0) 2017.05.08
함수  (0) 2017.05.08
for 문  (0) 2017.05.08
while 문  (0) 2017.05.08

파일 생성하기

f = open("새파일.txt", 'w')

f.close()

파일 객체 = open(파일 이름, 파일 열기 모드)

파일 열기 모드

파일열기모드

설명

r

읽기모드 - 파일을 읽기만 할 때 사용

w

쓰기모드 - 파일에 내용을 쓸 때 사용

a

추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용

 

파일을 쓰기 모드로 열게 되면 해당 파일이 이미 존재할 경우 원래 있던 내용이 모두 사라지고, 해당 파일이 존재하지 않으면 새로운 파일이 생성된다.

 

파일을 쓰기 모드로 열어 출력값 적기

 

f = open("C:/Python/새파일.txt", 'w')

for i in range(1, 11):

    data = "%d번째 줄입니다.\n" % i

    f.write(data)

f.close()

위의 프로그램을 다음 프로그램과 비교해 보자.

 

for i in range(1, 11):

    data = "%d번째 줄입니다.\n" % i

print(data)

두 프로그램의 다른 점은 data를 출력하는 방법이다. 두 번째 방법은 우리가 계속 사용해 왔던 모니터 화면에 출력하는 방법이고, 첫 번째 방법은 모니터 화면 대신 파일에 결과값을 적는 방법이다. 두 방법의 차이점은 print 대신 파일 객체 fwrite 함수를 이용한 것이다.

 

 

프로그램의 외부에 저장된 파일을 읽는 여러 가지 방법

readline()

f = open("C:/Python/새파일.txt", 'r')

line = f.readline()

print(line)

f.close()

 

readlines()

f = open("C:/Python/새파일.txt", 'r')

lines = f.readlines()

for line in lines:

    print(line)

f.close()

readlines() 함수는 파일의 모든 라인을 읽어서 각각의 줄을 요소로 갖는 리스트로 리턴한다. 따라서 위의 예에서 lines["1 번째 줄입니다.\n","2 번째 줄입니다.\n",..., "10 번째 줄입니다.\n"]라는 리스트가 된다.

 

read()

f = open("C:/Python/새파일.txt", 'r')

data = f.read()

print(data)

f.close()

 

f.read()는 파일의 내용 전체를 문자열로 리턴

 

파일에 새로운 내용 추가하기

쓰기 모드('w')로 파일을 열 때 이미 존재하는 파일을 열 경우 그 파일의 내용이 모두 사라지게 된다. 하지만 원래 있던 값을 유지하면서 단지 새로운 값만 추가해야 할 경우 경우에는 파일을 추가 모드('a')로 열면 된다.

 

f = open("C:/Python/새파일.txt",'a')

for i in range(11, 20):

    data = "%d번째 줄입니다.\n" % i

    f.write(data)

f.close()

 

추가 모드로 파일을 열었기 때문에 새파일.txt라는 파일이 원래 가지고 있던 내용 바로 다음부터 결과값을 적기 시작한다.

 

with문과 함께 사용하기

with open("foo.txt", "w") as f:

f.write("Life is too short, you need python")

위와 같이 with문을 이용하면 with 블록을 벗어나는 순간 열린 파일 객체 f가 자동으로 close되어 편리하다. (with구문은 파이썬 2.5부터 지원됨)

 

sys 모듈로 입력 인수 주기

import sys

args = sys.argv[1:]

for i in args:

    print(i.upper(), end=' ')

문자열 관련 함수인 upper()를 이용하여 명령 행에 입력된 소문자를 대문자로 바꾸어 주는 간단한 프로그램이다. 도스창에서 다음과 같이 입력해 보자.

 

C:\~>python sys2.py life is too short, you need python

LIFE IS TOO SHORT, YOU NEED PYTHON

 

argv[0] : 프로그램명

argv[1:] : 인수요소


참조 : 점프 투 파이썬 (https://wikidocs.net/26)

'Programming > Python' 카테고리의 다른 글

Lambda함수  (0) 2017.05.10
사용자 입출력  (0) 2017.05.08
함수  (0) 2017.05.08
for 문  (0) 2017.05.08
while 문  (0) 2017.05.08

input의 사용

>>> a = input()

Life is too short, you need python

>>> a

'Life is too short, you need python'


input은 입력되는 모든 것을 문자열로 취급한다.

print의 사용

>>> number = input("숫자를 입력하세요: ")

숫자를 입력하세요: 3

>>> print(number)

3

 

 

>>> print("life" "is" "too short")

lifeistoo short

 

>>> print("life", "is", "too short")

life is too short

 

 

한 줄에 결과값 출력하기


한 줄에 결과값을 계속 이어서 출력하려면 입력 인수 end를 이용해 끝 문자를 지정해야 한다.

 

>>> for i in range(10):

...     print(i, end=' ')

...

0 1 2 3 4 5 6 7 8 9



참조 : 점프 투 파이썬(https://wikidocs.net/25)

'Programming > Python' 카테고리의 다른 글

Lambda함수  (0) 2017.05.10
파일 입출력  (0) 2017.05.08
함수  (0) 2017.05.08
for 문  (0) 2017.05.08
while 문  (0) 2017.05.08

함수의 구조

def 함수명(입력 인수):

    수행할 문장1

    수행할 문장2

    ...

 

 

입력값이 여러 개일 때

def 함수이름(*args):

    수행할 문장

    ...

일반적으로 볼 수 있는 함수 형태에서 괄호 안의 입력 인수 부분이 *args로 바뀌었다.

 

)

>>> def sum_many(*args):

... sum = 0

... for i in args:

...     sum = sum + i

... return sum

...

 

return값이 2개이상일때

>>> def sum_and_mul(a,b):

... return a+b, a*b

튜플값으로 리턴된다. (a+b, a*b)

 

인수에 초깃값을 미리 설정해 주는 경우

def say_myself(name, old, man=True):

print("나의 이름은 %s 입니다." % name)

print("나이는 %d살입니다." % old)

if man:

    print("남자입니다.")

else:

    print("여자입니다.")

 

함수 입력 인수에 초깃값을 설정할 때 주의할 사항

def say_myself(name, man=True, old):

print("나의 이름은 %s 입니다." % name)

print("나이는 %d살입니다." % old)

if man:

    print("남자입니다.")

else:

    print("여자입니다.")

 

이전 함수와 바뀐 부분은 초깃값을 설정한 인수의 위치이다. 이것은 함수를 실행할 때 오류가 발생한다.


참조 : 점프 투 파이썬(https://wikidocs.net/24)

'Programming > Python' 카테고리의 다른 글

파일 입출력  (0) 2017.05.08
사용자 입출력  (0) 2017.05.08
for 문  (0) 2017.05.08
while 문  (0) 2017.05.08
if-elif-else 문  (0) 2017.05.07

구조

for 변수 in 리스트(또는 튜플, 문자열):

    수행할 문장1

    수행할 문장2

...

 

Range()

for문은 숫자 리스트를 자동으로 만들어 주는 range라는 함수와 함께 사용되는 경우가 많다.

>>> a = range(10)

>>> a

range(0, 10)

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

 

시작 숫자와 끝 숫자를 지정하려면 range(시작 숫자, 끝 숫자) 형태를 사용하는데, 이때 끝 숫자는 포함되지 않는다.

 

>>> a = range(1, 11)

>>> a

range(1, 11)


for문과 range() 예시 

forrange 함수를 이용하면 1부터 10까지 더하는 것을 다음과 같이 쉽게 구현할 수 있다.

>>> sum = 0

>>> for i in range(1, 11):

...     sum = sum + i

...

>>> print(sum)

55

range(1, 11)은 숫자 1부터 10까지(1 이상 11 미만)의 숫자를 데이터로 갖는 객체이다. 따라서 위의 예에서 i 변수에 리스트의 숫자들이 1부터 10까지 하나씩 차례로 대입되면서 sum = sum + i라는 문장을 반복적으로 수행하고 sum은 최종적으로 55가 된다.


참조 : 점프 투 파이썬(https://wikidocs.net/22)

'Programming > Python' 카테고리의 다른 글

사용자 입출력  (0) 2017.05.08
함수  (0) 2017.05.08
while 문  (0) 2017.05.08
if-elif-else 문  (0) 2017.05.07
자료형(6) - 집합(Set)  (0) 2017.05.07

while 조건문 :

    수행할 문장1

    수행할 문장2

    수행할 문장3

    ...

 

무한루프

while true : 

    ~~~


 

break

while문을 강제로 빠져 나간다.

 

continue

while문 안의 문장을 수행할 때 입력된 조건을 검사해서 조건에 맞으면 while문의 맨 처음(조건문)으로 다시 돌아가게 한다.



참조 : 점프 투 파이썬(https://wikidocs.net/21)

'Programming > Python' 카테고리의 다른 글

함수  (0) 2017.05.08
for 문  (0) 2017.05.08
if-elif-else 문  (0) 2017.05.07
자료형(6) - 집합(Set)  (0) 2017.05.07
자료형(5) - Dictionary  (0) 2017.05.07

기본 구조

If 조건문 :

    수행할 문장1

    수행할 문장2

    ...

elif 조건문 :

    수행할 문장1

    수행할 문장2

    ...

else:

    수행할 문장1

    수행할 문장2

    ...

 

요즘 파이썬 커뮤니티에서는 들여쓰기를 할 때 공백(Spacebar) 4개를 사용하는 것을 권장한다.

 

and, or, not

연산자

설명

x or y

xy 둘중에 하나만 참이면 참이다

x and y

xy 모두 참이어야 참이다

not x

x가 거짓이면 참이다

 

x in s, x not in s

in

not in

x in 리스트

x not in 리스트

x in 튜플

x not in 튜플

x in 문자열

x not in 문자열



참조 : 점프투 파이썬 (https://wikidocs.net/20)

'Programming > Python' 카테고리의 다른 글

for 문  (0) 2017.05.08
while 문  (0) 2017.05.08
자료형(6) - 집합(Set)  (0) 2017.05.07
자료형(5) - Dictionary  (0) 2017.05.07
자료형(4) - 튜플  (0) 2017.05.07

사용법

>>> s1 = set([1,2,3])

>>> s1

{1, 2, 3}

위와 같이 set()의 괄호 안에 리스트를 입력하여 만들거나 아래와 같이 문자열을 입력하여 만들 수도 있다.

 

>>> s2 = set("Hello")

>>> s2

{'e', 'l', 'o', 'H'}

특징

중복을 허용하지 않는다.

순서가 없다(Unordered).

리스트나 튜플은 순서가 있기(ordered) 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있지만 set 자료형은 순서가 없기(unordered) 때문에 인덱싱으로 값을 얻을 수 없다. 만약 set 자료형에 저장된 값을 인덱싱으로 접근하려면 다음과 같이 리스트나 튜플로 변환한 후 해야 한다.


순서 자료형

 리스트 , 튜플

 무순서 자료형

 딕셔너리, 집합



(중복을 허용하지 않는 set의 특징은 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용되기도 한다.)

 

>>> s1 = set([1,2,3])

>>> l1 = list(s1)

>>> l1

[1, 2, 3]

>>> l1[0]

1

>>> t1 = tuple(s1)

>>> t1

(1, 2, 3)

>>> t1[0]

1

 

집합 자료형 활용하는 방법

>>> s1 = set([1, 2, 3, 4, 5, 6])

>>> s2 = set([4, 5, 6, 7, 8, 9])


교집합

>>> s1 & s2

{4, 5, 6}

"&" 기호를 이용하면 교집합을 간단히 구할 수 있다.

 

또는 다음과 같이 intersection 함수를 사용해도 동일한 결과를 리턴한다.

>>> s1.intersection(s2)

{4, 5, 6}

s2.intersection(s1)을 사용해도 결과는 같다.

 

합집합

4, 5, 6처럼 중복해서 포함된 값은 한 개씩만 표현된다.

>>> s1 | s2

{1, 2, 3, 4, 5, 6, 7, 8, 9}

"|" 기호를 이용한 방법이다.

 

>>> s1.union(s2)

{1, 2, 3, 4, 5, 6, 7, 8, 9}

또는 union 함수를 이용하면 된다. 교집합에서 사용했던 intersection 함수와 마찬가지로 s2.union(s1)을 사용해도 동일한 결과를 리턴한다.

 

차집합

>>> s1 - s2

{1, 2, 3}

>>> s2 - s1

{8, 9, 7}

빼기(-) 기호를 이용한 방법이다.

 

>>> s1.difference(s2)

{1, 2, 3}

>>> s2.difference(s1)

{8, 9, 7}

difference 함수를 이용해도 차집합을 구할 수 있다.

 

집합 자료형 관련 함수들

1개 추가하기(add)

1개의 값만 추가(add)

>>> s1 = set([1, 2, 3])

>>> s1.add(4)

>>> s1

{1, 2, 3, 4}

값 여러 개 추가하기(update)

>>> s1 = set([1, 2, 3])

>>> s1.update([4, 5, 6])

>>> s1

{1, 2, 3, 4, 5, 6}

 

특정 값 제거하기(remove)

>>> s1 = set([1, 2, 3])

>>> s1.remove(2)

>>> s1

{1, 3}



참조 : 점프 투 파이썬 (https://wikidocs.net/1015)

'Programming > Python' 카테고리의 다른 글

while 문  (0) 2017.05.08
if-elif-else 문  (0) 2017.05.07
자료형(5) - Dictionary  (0) 2017.05.07
자료형(4) - 튜플  (0) 2017.05.07
자료형(3) - 리스트  (0) 2017.05.07

+ Recent posts