반응형

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 map : 리스트의 요소를 지정된 함수로 처리해주는 함수

              원본 리스트를 변경하지 않고 새 리스트를 생성

 

  • list(map(함수, 리스트))
  • tuple(map(함수, 튜플))

ex)

>>> a = [1.2, 2.5, 3.7, 4.6]
>>> a = list(map(int, a))
>>> a
[1, 2, 3, 4]

 

모든 반복 가능한 객체를 넣을 수 있음

ex) range를 사용해서 숫자를 만든 뒤 숫자를 문자열로 변환

>>> a = list(map(str, range(10)))
>>> a
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

 

x = input().split()    # input().split()의 결과는 문자열 리스트
m = map(int, x)        # 리스트의 요소를 int로 변환, 결과는 맵 객체
a, b = m               # 맵 객체는 변수 여러 개에 저장할 수 있음
반응형

'Language Study > Python' 카테고리의 다른 글

Lambda(람다)  (0) 2020.01.07
프린트문 옵션(문자열 형식)  (0) 2020.01.05
python " _ " (언더바) 쓰임  (5) 2020.01.05
List & Tuple  (0) 2020.01.05
swap  (0) 2020.01.04
반응형

lambda : 쓰고 버리는 일시적인 함수 / 함수가 생성된 곳에서만 필요

즉, 간단한 기능을 일반적인 함수와 같이 정의해두고 쓰는 것이 아니고, 즉시 사용하고 버릴 수 있다.

 

람다 함수 사용법

>>> def inc(n):

	return lambda x: x + n



>>> f = inc(2)

>>> g = inc(4)

>>> print(f(12))

14

>>> print(g(12))

16

>>> print(inc(2)(12))

14

1. map() : 두개의 인수를 가지는 함수 

r = map(function, iterable ...)

- function : 함수 이름

- iterable : 한번에 하나의 멤버를 반환할 수 있는 객체

- map은 리스트의 요소를 각각 처리하므로 lambda의 반환값도 요소여야 한다

 

>>> a = [1,2,3,4]

>>> b = [17,12,11,10]

>>> list(map(lambda x, y:x+y, a,b))

[18, 14, 14, 14]

 

2. filter() 함수

 r = filter(function, iterable)

 

- filter에 인자로 사용되는 function 은 처리되는 각 요소에 대해 boolean 값을 반환

- true 반환 : 그 요소만 남고

- false : 그 요소 제거

 

>>> sort = [2, 18, 9, 22, 17, 24, 8, 12, 27]

>>> list( filter(lambda x: x % 3 == 0, sort) )

[18, 9, 24, 12, 27]

 

3. reduce() 함수

functools.reduce(function, iterable[, initializer])

- 두 개의 필수 인자 + 하나의 옵션 인자

- function 을 사용해서 itreralble 하나의 값으로 줄인다. 

- initializer 사용 시 첫 번째 인자로 추가된다

 

>>> from functools import reduce

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

15

반응형

'Language Study > Python' 카테고리의 다른 글

리스트에 map 사용하기  (0) 2020.01.27
프린트문 옵션(문자열 형식)  (0) 2020.01.05
python " _ " (언더바) 쓰임  (5) 2020.01.05
List & Tuple  (0) 2020.01.05
swap  (0) 2020.01.04
반응형

루프문을 통해 문제를 풀면 값이 제대로 나오는지 확인하기 위해 사용해야한다.

 

가로로 출력

print('variable',variable,end='')

end = '' : 그다음 출력문이 오른쪽에 이어서 표시 

공백, 콤마 등으로 구분하고 싶으면 end = ' '  나 end = ',' 처럼 문자열을 지정해준다.

 

, 대신 +를 쓰면 문자끼리는 공백없이 이어져서 출력되고 , 숫자끼리는 합산된다.

>>>var_char = "A"

>>>var_num = 1
>>>var_num2 = 2
>>>print('This is string :' + var_char, 'This is number :', var_num+var_num2)

This is string :A This is number : 3

 

여러 항목 출력1

print('{0} and {1}'.format('spam', 'eggs'))
print('{1} and {0}'.format('spam', 'eggs'))
 
num1=1;num2=2
print('{0} {1}'.format(num1,num2))

.format 사용하여 값을 여러 개 주고, 중괄호로 읽어온다

 

여러 항목 출력2

print('Text %s'%var_char)
print('Number %d'%var_num)

	
print('This is text %s This is number %d'%(var_char,num1))
#괄호로 묶어서 출력해준다

출력문 안쪽에 %s %d %f를 써주고, 출력구문 바로 %뒤에 변수명이나 값을 써준다.

(%s:문자열 %d:정수 %f:부동소수점)

반응형

'Language Study > Python' 카테고리의 다른 글

리스트에 map 사용하기  (0) 2020.01.27
Lambda(람다)  (0) 2020.01.07
python " _ " (언더바) 쓰임  (5) 2020.01.05
List & Tuple  (0) 2020.01.05
swap  (0) 2020.01.04
반응형

 

 

 

 

 

for _ in range(5):
	print('hi')

 변수 _ 가 0, 1, 2, 3, 4 값을 가지고 반복을 수행한다

실제 사용되지는 않기 때문에  " _ " 를 사용함

 

=> dummy variable 

 

  1. 인터프리터에서 마지막 값을 저장하고 싶을 때
  2. 값을 무시하고 싶을 때
  3. 변수나 함수 명에 특별한 의미 부여하고 싶을 때
  4. 숫자 리터럴 값의 자릿수 구분을 위한 구분자로 사용할 때

1 번 사용법

 : 인터프리터에 마지막 값 저장하고 싶을 때 사용 ( _ => 20이 저장되어 있다)

>>>_ = 20
>>>print(_)
20

>>>_*3
60

>>>_/2
10.0

2번 사용법 

: 값을 무시하고 싶을 때 사용 

>>>x, _, y = 1, 2, 3

>>>x
1
>>>y
3

>>> x, *_ , y = 1, 2, 3, 4, 5
#여러 개의 값을 무시하려면 *를 붙여서 사용한다 
#index 가 필요없는 for 문을 작성할 경우 사용 가능 

>>>x
1

>>>y
5
for _ in range(n):
	print("test")

_ 를 인덱스로 사용할 수 있다.

 

3번 사용법

: 특별한 의미를 부여하고 싶을 때

  • 폴더
    • __init__.py 라는 파일이 있으면 그 폴더를 패키지로 만들 수 있다
  • 메소드 
    • '_' 가 앞4.에 붙으면 외부 사용자는 사용하지 말라는 권유 문법
    • '__'가 붙은 메소드는 
      • 매직 메소드 : 클래스 작성 시 사용하는 " __init__, __str__' 등의 메소드
      • 맹글링 : 컴파일러, 인터프리터가 변수나 함수명을 일정한 규칙에 의해 변형시키는 것 의미
    • 메소드의 맹글링 규칙은 메소드 앞에 _ClassName 을 붙이는 것으로 맹글링
class A:
	def __double_method(self):
    	pass
class B:
	def __double_method(self):
    	pass

print(dir(A()))
print(dir(B()))

 

4번 사용법

숫자, 문자값의 자릿수 구분 위한 구분자 

dec_base = 1_000_000

print(dec_base)
>>> 1000000

 

반응형

'Language Study > Python' 카테고리의 다른 글

Lambda(람다)  (0) 2020.01.07
프린트문 옵션(문자열 형식)  (0) 2020.01.05
List & Tuple  (0) 2020.01.05
swap  (0) 2020.01.04
6. 모듈  (0) 2019.07.15
반응형

요소를 추가/삭제하거나, 정보를 조회하는 메서드 제공

for 문과 결합하여 연속적이고 반복되는 값을 손쉽게 처리 

 

1. 리스트에 요소 추가하기(삽입)

  • append : 요소 하나 추가
  • extend : 리스트를 연결하여 확장
  • insert :  특정 인덱스에 요소 추가 

    1) append : 리스트 끝에 요소 하나 추가  / 빈 리스트에서 값 추가 가능 

>>>  a = [10, 20, 30]
>>>  a.append(500)
>>>  a
[10, 20, 30, 500]
>>>  len(a)
4

     - 리스트 안에 리스트도 추가 가능 

>>> a = [10, 20, 30]
>>> a.append([500, 600])
>>> a
[10, 20, 30, [500, 600]]
>>> len(a)
4

 

  2) extend : 리스트 확장하기 / 리스트 끝에 다른 리스트를 연결하여 리스트 확장 (리스트 + 리스트 연결한 모양)

>>> a = [10, 20, 30]
>>> a.extend([500, 600])
>>> a
[10, 20, 30, 500, 600]
>>> len(a)
5

   

  3) insert : 리스트의 특정 인덱스에 요소 하나 추가 

  • insert(0, 요소): 리스트의 맨 처음에 요소를 추가
  • insert(len(리스트), 요소): 리스트 끝에 요소를 추가
>>> a = [10, 20, 30]
>>> a.insert(0, 500)
>>> a
[500, 10, 20, 30]

   

>>> a = [10, 20, 30]
>>> a.insert(len(a), 500)
>>> a
[10, 20, 30, 500]

insert 안에 리스트 넣으면 append 처럼 리스트 안에 리스트가 삽입

>>> a = [10, 20, 30]
>>> a.insert(1, [500, 600])
>>> a
[10, [500, 600], 20, 30]

슬라이스에 요소 할당 : 리스트 중간에 요소 여러개 추가 할 때

>>> a = [10, 20, 30]
>>> a[1:1] = [500, 600]
>>> a
[10, 500, 600, 20, 30]

2. 리스트에서 요소 삭제하기

  • pop: 마지막 요소 또는 특정 인덱스의 요소를 삭제
  • remove: 특정 값을 찾아서 삭제

   1) pop() : 리스트의 마지막 요소를 삭제한 뒤, 삭제한 요소 반환(=del)

>>> a = [10, 20, 30]
>>> a.pop()
30
>>> a
[10, 20]
>>> a = [10, 20, 30]
>>> a.pop(1)
20
>>> a
[10, 30]

   2) remove : 리스트에서 원하는 값 찾아 삭제

>>> a = [10, 20, 30, 20]
>>> a.remove(20)
>>> a
[10, 30, 20]

 

3. 특정 값 개수 구하기

  • count : 리스트에서 특정 값 개수 구함
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.count(20)
2

 

4. 리스트 순서 뒤집기

  • reverse : 리스트 요소 순서를 반대로 뒤집음
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.reverse()
>>> a
[40, 20, 15, 30, 20, 10]

 

5. 리스트 요소 정렬

  • sort() 또는 sort(reverse=False): 리스트의 값을 작은 순서대로 정렬(오름차순)
  • sort(reverse=True): 리스트의 값을 큰 순서대로 정렬(내림차순)
  • sorted : 정렬된 새 리스트 생성
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort()    # a의 내용을 변경하여 정렬
>>> a
[10, 15, 20, 20, 30, 40]
>>> b = [10, 20, 30, 15, 20, 40]
>>> sorted(b)    # 정렬된 새 리스트를 생성
[10, 15, 20, 20, 30, 40]

 

 

6. 리스트 모든 요소 삭제

  • clear : 리스트 모든 요소 삭제
>>> a = [10, 20, 30]
>>> a.clear()
>>> a
[]

 

 

7. 리스트 슬라이스 조작

  • a[len(a):] => 시작 인덱스 len(a)로 지정 , 리스트의 마지막 인덱스보다 1이 더 큰 상태 / 리스트 끝에서 부터 시작 
>>> a = [10, 20, 30]
>>> a[len(a):] = [500]
>>> a
[10, 20, 30, 500]
>>> a = [10, 20, 30]
>>> a[len(a):] = [500, 600]
>>> a
[10, 20, 30, 500, 600]

#리스트 a 끝에 다른 리스트를 연결 (=extend)

## 리스트 비어 있는지 확인하기 

if not seq:    # 리스트가 비어 있으면 True
if seq:        # 리스트에 내용이 있으면 True

>>> seq = [10, 20, 30]
>>> seq[-1]
30
반응형

'Language Study > Python' 카테고리의 다른 글

프린트문 옵션(문자열 형식)  (0) 2020.01.05
python " _ " (언더바) 쓰임  (5) 2020.01.05
swap  (0) 2020.01.04
6. 모듈  (0) 2019.07.15
5. 제어문  (0) 2019.05.22
반응형

정렬 알고리즘에서 많이 쓰이는 swap 사용법

 

두 변수의 값을 바꾸는 방법

 

예시) a = 3, b = 'abc' a = 'abc', b = 3

 

a = 3
b = 'abc'

a, b = b, a 

 

반응형

'Language Study > Python' 카테고리의 다른 글

python " _ " (언더바) 쓰임  (5) 2020.01.05
List & Tuple  (0) 2020.01.05
6. 모듈  (0) 2019.07.15
5. 제어문  (0) 2019.05.22
4. 추상화 심화  (0) 2019.05.08
반응형

1. 모듈 :  변수, 함수, 클래스 등을 모아 놓은 파일 / 모듈에 정보를 한번만 정의해두면 여러 프로그램에서 가져다 씀.

# calculator.py
# calculator 모듈
 
# 합
def sum(x, y):
    return x + y
 
# 차이
def difference(x, y):
    return x - y
  
# 곱
def product(x, y):
    return x * y
 
# 제곱
def square(x):
    return x * x
 
----------------------------------------
# test.py
 
# calculator.py에서 sum 함수 불러오기
from calculator import sum
 
print(sum(35))  >> 8
 
#calculator.py에서 모든 함수 
from calculator import *
cs



2. randit / uniform 함수

randit : 두 정수 사이의 어떤 랜덤한 정수(난수)를 리턴시켜주는 함수

uniform : random이라는 모듈 안에 정의되어 있는, 두 수 사이의 랜덤한 소수(난수)를 리턴시켜주는 함수

from random import uniform
 
# a <= N <= b인, 랜덤한 소수(난수) N의 값을 리턴시켜준다.
= uniform(01)
print(x)
cs


3. input함수

사용자로부터 값을 입력받는 함수

name = input("이름을 입력하세요: ")
print("Hello " + name)
 
>> Hello 
cs


input 함수 통해 숫자 입력 받으려고 한다면

= int(input("첫 번째 정수: "))
= int(input("두 번째 정수: "))
print("두 정수의 합: %d" % (x + y))
 
>>3
>>4
>>7
cs


반응형

'Language Study > Python' 카테고리의 다른 글

List & Tuple  (0) 2020.01.05
swap  (0) 2020.01.04
5. 제어문  (0) 2019.05.22
4. 추상화 심화  (0) 2019.05.08
3. 추상화  (0) 2019.04.06
반응형

## 원하는 명령들을 한번만 써놓고 반복적으로 실행 가능 = 반복문


1. while 반복문(조건 부분이 true일 동안에 수행 부분이 계속 실행) -> loop( 반복문)

while 조건부분(결과값으로 불린(True, False)이 나오는 식):
    수행부분(반복적으로 실행하고 싶은 명령들)
 
=1
while i<=3:
    print("i can code too!")
    #무한루프는 좋지 않음
    i = i + 1 
    #i를 지정해줘야 함
cs


ex) while 문을 사용하여 100 이상의 자연수 중 가장 작은 23의 배수를 출력 해보세요

= 100
 
while i % 23 != 0:
    i = i + 1 
print(i)
cs


2. if문(조건 부분이 참일 때 수행 부분이 딱 한번만 실행)-> conditional(조건문)

ex) 

= 5
= 3
 
if a < b:
    print("a는 b보다 작습니다.")
elif a == b:
    print("a와 b는 같습니다.")
else:
    print("a는 b보다 큽니다.")
 
>>> a는 b보다 큽니다.
cs


- 규칙 

= 처음에는 if문 꼭

= 중간에는 elif문은 0번 이상, 원하는 횟수만큼 씀

= 마지막 else문은 0번 또는 1번 쓸 수 있습니다. 


ex2)

temp = 13
 
if temp < = 5:
    print("내복과 긴팔과 자켓을 입으세요")
elif temp < 10:
    print("긴팔과 자켓을 입으세요")
elif temp <= 15:
    print("긴팔을 입으세요")
else:
    print("반팔을 입으세요")
 
>> 긴팔을 입으세요 
cs


ex3) 학점 계산기

def print_grade(midterm, final):
    total = midterm + final
    if total >= 90:
        print("You get an A")
    elif total >= 80:
        print("You get a B")
    elif total >= 70:
        print("You get a C")
    elif total >= 60:
        print("You get a D")
    else:
        print("You fail")
    
# 테스트
print_grade(4045)
print_grade(2035)
print_grade(3032)
print_grade(5045)
 
>>
You get a B
You fail
You get a D
You get an A
cs


ex4) 이상한 수학 문제 1

-100이하의 자연수 중 8의 배수 이지만, 12의 배수는 아닌 것을 모두 출력하세요

= 1
while i <= 100:
    if i % 8 == 0 and i % 12 != 0:
        print(i)
    i += 1
 
>>
8
16
32
40
56
64
80
88
cs


ex5) 이상한 수학 문제2

-1000보다 작은 자연수 중 2 또는 3의 배수의 합을 출력하는 프로그램을 써보세요.

= 1
sum = 0
while i < 999:
    i = i + 1
    if i % 2 == 0 or i % 3 == 0:
        sum = sum + i
print(sum)>> 333167
cs


ex6)약수 찾기

-자연수 중 120의 약수를 모두 출력하고, 총 몇 개의 약수가 있는지 출력하는 프로그램 작성

i=120
x=0
count=0
 
while x <= 120:
    x = x+1
    if i % x == 0:
        count = count +1
        print(x)
print("%d의 약수는 총 %d개 입니다." %(i,count))
cs


ex7)복리 계산

#상수 정의
INSERT_RATE = 0.12
APARTMENT_PRICE = 1100000000
 
#변수 정의
year = 1988
amount = 50000000
add = 0
 
while year < 2016:
    amount = amount * (1 + INSERT_RATE)
    year = year + 1
 
if amount > APARTMENT_PRICE:
    add = amount - APARTMENT_PRICE
    print("%d원 차이로 동일 아저씨의 말씀이 맞습니다."%(add))
else:
    add = APARTMENT_PRICE - amount
    print("%d원 차이로 미란 아주머니의 말씀이 맞습니다."%(add))
cs


ex8)피보나치 수열 계산

previous = 0
current = 1
= 0
 
while i < 20:
    print(current)
    temp = previous
    previous = current
    current = current + temp
    i += 1))
cs


ex9)구구단 출력

= 0 
while i < 9:
    i += 1
    j = 1
    while j <10:
        print("%d * %d = %d" %(i,j,i*j))
        j += 1
cs


3. break문 : while문 조건 부분과 상관 없이 반복문에서 나오고 싶을 때 사용

= 100
while True:
    # i가 23의 배수면 반복문을 끝냄
    if i % 23 == 0:
        break
    i = i + 1
 
print(i)
>>115
cs


4. continue문 : 현재 진행되고 있는 수행부분을 중단시키고 바로 조건 부분을 다시 확인하고 싶을 때 사용

= 0
while i < 15:
    i = i + 1
 
    # i가 홀수면 print(i) 안하고 바로 조건부분으로 돌아감
    if i % 2 == 1:
        continue
    print(i)
 
>>
2
4
6
8
10
12
14
cs


반응형

'Language Study > Python' 카테고리의 다른 글

swap  (0) 2020.01.04
6. 모듈  (0) 2019.07.15
4. 추상화 심화  (0) 2019.05.08
3. 추상화  (0) 2019.04.06
2. 자료형  (0) 2019.03.30

+ Recent posts