rueki
day5-1. 기타 내장 함수 본문
이전 시간까지 사용자 정의 함수와 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)))
'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 |