안녕하세요 이승혁입니다.
이번 시간에는 반복 가능 자료에서 특정 자료만 걸러주는 filter, 리스트와 같은 시퀀스 자료에서 최대값, 최소값 구하기 ,
문자열에서 특정 위치의 문자를 구하고, 자르고, 더해보는 실습을 진행하겠습니다.
※ filter
파이썬 내장함수 filter는 리스트 같이 반복 가능한 자료에서 특정 조건을 만족하는 값만을 편하게 추출합니다.
filter(함수,반복 자료) 의 구조로 사용합니다.
filter 함수를 사용한 결과는 filter 객체로 반환되기 때문에 list형태로 변환해 주어야 합니다.
실습 1. filter 함수를 사용해 짝수만 출력해보기
list_data=range(1,101) # 1부터 100까지의 range 생성
def find_even(n): # 짝수만 반환하는 함수 생성
if n%2==0:
return n
else:
return
list_even=filter(find_even,list_data) #filter 사용
print(list(list_even)) # list 객체로 변환
ㆍ range 함수
반복 가능한(iterable) 연속적인 정수를 생성해 줍니다.
range(시작위치,끝위치+1,간격) 의 구조로 사용합니다.
정수만 가능하며 소수를 사용하려면 numpy의 arange 구조를 사용해야 합니다.
※ max , min
max , min은 입력된 자료에서 최대값과 최소값을 구해주는 함수입니다.
리스트 같은 시퀀스 자료가 입력되면 자료의 요소 중 최대값, 최소값을 구해 리턴합니다.
import numpy as np
list_data=range(1,101)
print('max =',max(list_data))
print('min =',min(list_data))
print('np.max =',np.array(list_data).max())
print('np.min =',np.min(list_data))
ㆍ 다양한 최대 최소값 표현
일반 리스트 : max(리스트) or min(리스트)
numpy 사용 : 1. numpy.max(리스트) or numpy.min(리스트)
2. numpy.array(리스트).max() or numpy.array(리스트).min()
다음과 같이 다양한 방법으로 표현할 수 있습니다.
문자열의 최대 최소값은 문자 코드의 값이 가장 큰 문자와 가장 작은 문자를 사용합니다.
알파벳의 경우 알파벳 순서로 가장 뒤의 문자입니다.
A ~ Z , a ~ z
txt='abcdefghijklmnopqrstuvwxyz'
print(min(txt))
print(max(txt))
txt2=txt.upper()
print(min(txt2))
print(max(txt2))
txt3=txt+txt2
print(min(txt3))
print(max(txt3))
※ 문자열의 특정 위치 문자 얻기
특정 위치 문자를 얻기 위해 인덱싱을 사용합니다.
인덱스는 0부터 시작(가장 왼쪽)하고, 음수를 사용할 경우 가장 끝(가장 오른쪽)의 인덱스는 -1부터 시작합니다.
txt='abcdefghijklmnopqrstuvwxyz'
print('index 0 :',txt[0])
print('index 3 :',txt[3])
print('index 5 :',txt[5])
ㆍ 인덱스 찾기 ?
만약 문자열의 내용을 모르고, 'c'라는 문자의 인덱스를 찾으려면 ?
index 함수를 사용한다.
ㆍ 인덱스 활용
인덱스를 활용해 문자를 자를 때, 특정 문자를 찾을 때 등 다양하게 활용할 수 있습니다.
email='sh246@gmail.com'
domain=email[email.index('@')+1:email.index('.')]
print(domain)
※ 문자열에서 지정한 구간의 문자열 얻기
슬라이싱을 이용해서 얻어낼 수 있습니다.
슬라이싱 : 문자열[시작위치:끝위치+1]
시작 인덱스가 0번인 경우 작성하지 않아도 괜찮습니다.
끝위치가 문자 끝일 경우 작성하지 않아도 괜찮습니다.
txt='abcde'
for i in range(len(txt)):
print(txt[:i+1])
print('------')
for i in range(len(txt)):
print(txt[i:])
※ 문자열에서 특정 간격으로 출력하기
슬라이싱에 스텝을 이용해서 출력할 수 있습니다
슬라이싱 : 문자열[시작위치 : 끝위치+1 : 스텝]
num='123456789'
print(num[::2])
처음부터 : 끝까지 : 2간격으로 슬라이싱을 합니다
즉 인덱스는 0 2 4 6 8 10 의 인덱스가 출력됩니다.
※ 문자열 거꾸로 만들기
슬라이싱을 사용해 거꾸로 된 문자열을 출력할 수도 있습니다.
마지막 인덱스는 -1 이라는 것을 생각하면 됩니다.
num='123456789'
print(num[::-1])
※ 문자열 합치기
'+' 연산자를 사용해 두 문자열을 합쳐 하나의 문자열로 만들 수 있습니다.
a='오늘은 '
b='토요일 '
c='입니다.'
print(a+b+c)
※ 문자열 반복해서 새로운 문자열 만들기
'*' 연산자를 사용해 숫자 연산처럼 곱해 반복된 문자열을 사용할 수 있습니다.
a='아자'
b='화이팅'
print(a*3+b)
※ 문자열에 특정 문자가 있는지 확인하기
문자열에 특정한 문자가 있는지 확인하려면 in을 사용합니다.
문자열 뿐 아니라 리스트와 같은 반복 가능한 개체에도 사용 가능합니다.
txt='나무 배 사과'
listdata=['나무','배','사과']
rangedata=range(1,10)
if '나무' in txt:
print('나무가 txt에 있습니다.')
else:
print('나무가 txt에 없습니다.')
if '나무' in listdata:
print('나무가 listdata에 있습니다.')
else:
print('나무가 listdata에 없습니다.')
if 5 in rangedata:
print('5가 rangedata에 있습니다.')
else:
print('5가 rangedata에 없습니다.')
이번 시간에는 문자열에 대한 작업을 수행해 보았습니다.
다음 시간에도 문자열에 대한 여러 작업들을 더 수행해보도록 하겠습니다.
감사합니다.