PYTHON

파이썬(operator.itemgetter,리스트 내장객체, 함수)

Positive_Monster 2022. 4. 2. 18:38
더보기

▣ 주요 키워드

  1. operator.itemgetter() 
  2. 리스트 내장객체(list comprehension)
  3. 함수(function)

 

★ opertator.itemgetter()

-  sorted함수로 정렬할 때 사용되는 옵션

import collections
word = ('사랑','우정','인생','사랑','인생','고민','열정','열정',
        '관심','인생','취업','취업','애정','애정','열정','사랑')
word_cnt = collections.Counter(word)
sorted(word_cnt) # key만 정렬 value값 출력x
sorted(word_cnt.keys()) # key만 정렬 value값 출력x
sorted(word_cnt.values()) # value만 정렬 key값 출력x
sorted(word_cnt.items()) # key값으로 정렬하고 value값도 출력 o

sorted(word_cnt.items(), key=operator.itemgetter(0)) # key값으로 정렬하고 value값도 출력(0은 key위치)
sorted(word_cnt.items(), key=operator.itemgetter(1)) # value값으로 정렬하고 key값도 출력 (1은 value위치)


★ 리스트 내장객체( list comprehension)

[ 표현식 for 변수 in 반복가능한 자료형 ]
x = list(range(1,11))
y = x *2
#(1) x변수에 1~10까지의 수가 있을 때 *2를 하게되면 1~10이 두번나오게 되면 곱해지지 않는다

x = range(1,11,1)
y = []
for i in x:
    y.append(i *2)
#(2) for문을 써서 각 값들을 2곱해서 y변수에 넣어주는 방식으로 진행한다

x = list(range(1,11))
y = [i*2 for i in x]
#(3) 리스트 내장객체를 이용하여 더욱 간단하게 표현할 수 있다.

(1)
(2),(3)

- 리스트 내장객체(2중 for문)

[표현식 for 변수 in 반복가능한 자료형 for 변수 in 반복가능한 자료형]
먼저 온 for문이 밖 그 다음 for문이 안
z = []
for i in x:
    for j in y:
        z.append(i * j)
z

[i * j for i in x for j in y]
# 위의 2중for문을 간단히 한 줄로 코드를 수행할 수 있다

- 리스트 내장객체 (for, if)

[i for i in range(1,11) if i%2 ==0]
# 1부터 10까지 숫자중 짝수만 출력
# for문 뒤에 if문

- 리스트 내장객체 (for, if else)

x = [1,-1,2,-2,3,-3]
[i if i > 0 else 'x' for i in x]

# x변수에서 음수는 x로 출력
# 리스트내장객체 if else for 순서


★ 함수(function)

- 반복되는 코드를 하나로 묶어서 처리하는 방법
- 기능의 프로그램

def 함수이름(인수,인수....):
  수행할 문장
  ....
  [return 값] # 선택(옵션)

함수이름()
def print_():
    print('오늘 하루도 알차게 보내자')

print_() # 함수 불러오기

- 매개변수

■ 고정 매개변수
def sum_fun(arg1,arg2):
    return arg1 + arg2
sum_fun(1,2)


■ 가변 매개변수
def 함수이름(*가변인수):
  for i in 가변인수:
    수행할 문장
    
def sum_fun2(*x):
    total = 0
    for i in x:
        total += i
    return total    
sum_fun2(1,2,3,4,5)
sum_fun2(*[1,2,3,4,5]) # 리스트형식이나 튜플형식으로 매개변수 넣을 때 * 가 필요
# 들어온 여러개의 값들을 더하는 함수


■ (고정,*가변) 매개변수
def 함수이름(인수1, *인수2): # 인수값 하나는 고정이고 다음은 가변으로
  ..
  수행할 문장

def sum_fun3(arg,*arg2):
    x = arg
    hap = 0
    for i in arg2:
        hap = hap + i
    print('{}의 점수는 {}'.format(x,hap))
    
sum_fun3('마돈나',1,2,3,4,5)
sum_fun3('김씨',*[1,2,3,4,5])

■ (**인수) 딕셔너리 형태 매개변수
# ** 매개변수 옵션은 딕셔너리 형식의 값 key ~ value 형태로 인수값을 받을 때 사용
def dict_fun(**arg):
    for k,v in arg.items():
        print(f'key {k}의 value는 {v}')

dict_fun(운동종류='농구',동물종류='개') # 함수(**매개변수) : 함수(key=value)
info = {'운동종류':'농구','동물종류':'개'}
dict_fun(**info)
■ 형식매개변수의 기본값을 설정
def test(arg1,arg2,arg3='M'): # arg3 인수값에 값을 입력하지 않으면 기본값인 M이 들어감
    print(f'이름 : {arg1}, 과목 : {arg2}, 성별 :{arg3}')
test('홍길동','영어')    
test('홍길동','영어','F')

- return

return : 함수를 수행하여 나온 값을 되돌려 출력시켜주는 기능
def f1(arg1,arg2):
  return arg1 + arg2 # 리턴문은 첫 번째 나온 것만 수행됨(arg1 +arg2를 수행한 값을 반환시킴)
  return arg2 * arg2 # 수행되지않음

 

- 지역변수, 전역변수

전역변수(global variables) : 프로그램이 종료될때까지 어디서든지 사용할 수 있는 변수
지역변수(local variables) : 함수안에서만 사용되는 변수
glo_x = 10 # 전역변수
def test():
    loc_x = 20 # 지역변수
    print(glo_x) # 전역변수 glo_x
    print(loc_x)

test()  
print(glo_x) # 전역변수 glo_x
print(loc_x) # 오류

glo_x = 10 # 전역변수
def test1():
    loc_x = 20 # 지역변수
    glo_x = 30 # 지역변수 , 전역변수 glo_x에 영향없고 test1()함수내에서만 존재하는 변수
    print(glo_x) # 지역변수 glo_x 출력

test1()
print(glo_x) # 전역변수 glo_x 출력
# 전역변수를 함수내에서 사용하고 값을 수정할 때 global 변수 사용
glo_x = 10 # 전역변수
def test2():
    global glo_x # 함수내에 전역변수 선언 , 함수 밖에서 선언
    glo_x = 30 # 전역변수 glo_x의 값 수정
    print(glo_x)
test2()
print(glo_x)