프로그래밍/Python

Python-13) filter, 최대값, 최소값, 문자열 슬라이싱, 조작 : Python install, 파이썬 마스터

LeeSeunghyuk 2020. 12. 12. 13:04
반응형

안녕하세요 이승혁입니다.

 

이번 시간에는 반복 가능 자료에서 특정 자료만 걸러주는 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에 없습니다.')

 

이번 시간에는 문자열에 대한 작업을 수행해 보았습니다.

 

다음 시간에도 문자열에 대한 여러 작업들을 더 수행해보도록 하겠습니다.

감사합니다.

반응형