rueki

day5-1. 기타 내장 함수 본문

python

day5-1. 기타 내장 함수

륵기 2020. 1. 7. 22:56
728x90
반응형

이전 시간까지 사용자 정의 함수와 lambda, 내장함수 몇 가지 등을 알아보았다.

이번 시간에는 기타 내장함수에 대해서 알아보자.

 

복습 개념 

함수의 종류 : 사용자 정의함수, 외장함수, 내장함수, 외장 모듈 및 패키지...

 


1. char(), ord()

아스키 코드와 관련된 함수로는 아래와 같다.

char(숫자) -> 아스키 코드값에 해당하는 문자나 숫자

ord(관련 문자나 숫자) -> 아스키코드값

print(chr(65)) #A
print(ord('A')) #65

 

2. all(), any()

리스트 및 튜플 등의 원소값이 True / False인지 나타낸다.

all(리스트/튜플/집합) : 값이 모두 True 조건이면 True
any(리스트/튜플/집합) : 값중 하나라도 True 조건이면 True

 

Flase 조건값 : None, 0, 0.0, '', False

 

listA = [0,False, '',0.0]
setB = {0, False, '', None, 0.0}
tupleC = (1,2,3,True,'Yes')

print(any(listA)) # False
print(any(setB)) # False
print(any(tupleC)) # True
print(all(listA)) # False
print(all(setB)) # False
print(all(tupleC)) # True

 

3. isdigit(), isnumeric(), islower(), isupper(), isdecimal()

문자열변수.isdigit() : 모두 숫자문자인가?

문자열변수.isnumeric() : 모두 숫자문자인가?

문자열변수.islower / isupper() : 대/소문자 구분

문자열변수.isdecimal() : 모두 10진수인가?

 

result = []
while True:
	data = input('데이터를 입력하세요 : ')
    if data.isdigit():
    	result.append(data)
        print('리스트에 요소가 추가되었습니다.')
    else:
    	print('숫자 요소를 추가해주세요')
        continue:
    if len(result) == 5:
    	break

문자열을 입력받아서 그 문자열이 숫자로 구성되있으면 리스트에 추가하는 코드이다.

여기서 살짝 변형해서 문자열에서 숫자와 숫자가 아닌 문자의 개수를 출력해보자.

 

word = input()
numList = []
notNumList = []
for i in word:
	if i.isdigit():
    	numList.append(i)
    elif i.isdigit() == False:
    	notNumList.append(i)
        
print('숫자개수 : ',len(numlist))
print('문자개수 : ',len(notNumlist))

 

4. sorted() , sort() ,reverse()

정렬에 관한 내장함수이다.

sorted(리스트/튜플/집합..) : 바로 인쇄 가능
 : 데이터 정렬
 : 결과값을 리턴한다. -> print()로 바로 출력
 리스트 이름.sort() : 리스트 정렬
 리스트 이름.reverse() : 리스트 역정렬

 

5. zip()

zip 객체로 리턴 -> for .. in zip 해서 아이템 확인
: 리스트의 각 아이템 요소들을 튜플화 구조로 묶어준다.
list(zip 객체) : [(아이템1, 아이템2)]
zip(*zip객체) : zip으로 묶어준 객체를 원래대로

 

p1 = ['길동', '동미','미영','영철']
p1Gender = ['남','여','여','남']

for i in zip(p1, p1Gender):
	print(i)
    
# 튜플 구조로 반환
#('길동', '남')
#('동미', '여')
#('미영', '여')
#('영철', '남')


print(list(zip(p1,p1Gender)))
#[('길동', '남'), ('동미', '여'), ('미영', '여'), ('영철', '남')]

 

Zip으로 리스트 안의 튜플 구조를 해체하기 위해서는 unzip을 해야한다.

 

변수1, 변수2 = zip(*리스트 튜플 이름)

 

myList2 = [('a','apple'),('b','banana')]
x, y = zip(*myList2)


# ('a', 'b')
# ('apple', 'banana')

 

딕셔너리 -> key 리스트, Value 리스트  Zip으로 딕셔너리 만들기, unzip 하기

mydict = {'a':'africa','d':'drama','m':'movie'}


print(list(mydict))
# ['a', 'd', 'm']

print(list(mydict.values()))
# ['africa', 'drama', 'movie']

print(zip(list(mydict),list(mydict.values())))
# Zip 객체 출력됨

for i in zip(list(mydict), list(mydict.values())):
    print(i)
    
#('a', 'africa')
#('d', 'drama')
#('m', 'movie')

 

6. filter()

filter함수는 특정 조건으로 걸러서 걸러진 요소들로 iterator객체를 만들어서 리턴해준다.

 

filter(함수명 / lambda 함수, 리스트/튜플) -> 함수를 적용하여 리스트/튜플의 data에서 true인것만 return

 

filter 함수를 이용해서 짝수인지 판독하는 함수를 정의하자.

 

def is_even(n):
	templist = []
    for i in n:
    	if i % 2==0:
        	templist.append(i)
    print(templist)
    
list1 = [1,2,3,4,5,6,7,8,9,10]
is_even(list1)
#[2, 4, 6, 8, 10]

위는 사용자 정의 함수를 통한 문제 풀이였고 이번에는 filter를 이용해보자.

def oddPrint(n):
	if n % 2 == 0:
    	return True
        
print(filter(oddPrint, [10,30,5,9,18]))
#필터 객체로 나옴 -<filter object at 0x00000159D3A90CC8>

#for 문 형태
for i in filter(oddPrint2, [10,30,5,9,18]):
    print(i)
#리스트 형태로
print(list(filter(oddPrint2, [10,30,5,9,18])))

filter 함수를 사용하고 이에 대한 결과값은 for문으로 하나씩 확인 혹은 리스트 형태로 캐스팅 후 확인을 해야한다.

 


복습의 개념으로 사용자 정의 함수 이용, filter 이용, filter에서 lambda를 이용해서 문제를 풀어보자

Quiz : 숫자 리스트에서 양수만 출력하기

numlist = [10,-30,20,5,100]

def positive_num(list):
	result = []
    for i in list:
    	if i >0:
        	result.append(i)
    return result
    
def positive(x):
	return x>0
    
print(filter(positive, numlist))


print(list(filter(lambda x : x>0, numlist)))
728x90
반응형

'python' 카테고리의 다른 글

day5-3. 파일 입출력 기본 - 파일 입력  (0) 2020.01.10
day5-2. map 함수, reduce 함수  (0) 2020.01.09
day4-2. lambda 함수, 내장함수  (0) 2020.01.06
day4-1. 함수 (Function)  (0) 2020.01.06
day3-2. 반복문 (for , while)  (0) 2020.01.05
Comments