문자열
부분 문자열 출력하기
print('안녕하세요'[4] ) # 4번인덱스. 5번째 문자
print('안녕하세요'[-1] ) # 마지막문자, 마지막 인덱스
print('안녕하세요'[-2] ) # 끝에서 2번째 문자
print('안녕하세요'[1:3] ) # 1번 ~ 2번 인덱스. 3 미포함
print('안녕하세요'[:3] ) # 0번 ~ 2번 인덱스
print('안녕하세요'[3:] ) # 3번인덱스 부터 끝까지
print('안녕하세요'[::2] ) # 전체 문자열중 1칸씩 건너서
print('안녕하세요'[::-1] ) # 역순으로 전체 문자열 출력
print('안녕하세요'[::-2] ) # 역순으로 1칸씩 건너서
문자열 함수
count()
# hello 문자열에 l 문자의 갯수 출력하기 : count()
print('l문자의 갯수: ', a.count('l'))
print('h문자의 갯수: ', a.count('h'))
print('a문자의 갯수: ', a.count('a'))
find(), index()
# 문자열에서 문자의 위치 값 (인덱스 값) 출력하기 : find, index
print('l문자의 인덱스:', a.find('l'))
print('l문자의 인덱스:', a.index('l'))
# find,index 차이 : 없는 문자 검색시 결과가 달라짐
# find 함수 : -1 리턴
print('a문자의 인덱스:', a.find('a'))
# indesx 함수 : 오류발생
print('a문자의 인덱스:', a.index('a'))
# 찾고자 하는 문자열의 시작점 지정
print('3번 인덱스부터 있는 "l" 문자의 인덱스: ',a.find('l',3))
print('3번 인덱스부터 있는 "l" 문자의 인덱스: ',a.index('l',3))
문자열의 종류를 알려주는 함수
ss = '123'
ss = 'Aa123'
ss = 'Aa'
ss = 'AA'
ss = ' '
if ss.isdigit() :
print(ss,'숫자')
if ss.isalpha():
print(ss,'문자')
if ss.isalnum() :
print(ss,'문자 또는 숫자')
if ss. isupper() :
print(ss,'대문자')
if ss.islower() :
print(ss,'소문자')
if ss.isspace() :
print(ss,'공백')
함수
- 지역변수 : 함수 내부에서 사용되는 변수
- 전역변수 : 모든 함수에서 사용되는 변수
* 매개변수는 지역변수이다
*가능하면 함수에서는 지역변수 사용을 권장
*global 을 사용해 내부의 지역변수를 전역변수 값으로 사용할 수 있다 (권장하지않음)
함수의 정의 (def)
def multi(v1,v2) : # v1,v2 : 매개변수 => 함수 호출시 값을 전달받는 변수
list = []
res1 = v1 + v2
res2 = v1 - v2
list.append(res1) # list에 값을 추가
list.append(res2)
return list #return 값: 함수 종료, 함수를 호출한 곳에 값을 전달
- 가변 매개변수 : 매개변수의 갯수 지정 안함
def multiparam(* p) :
result = 0
for i in p :
result += i
return result
print('multi param() = ', multiparam()) #0
print('multi param(10) = ', multiparam(10)) #10
print('multi param(10,20) = ', multiparam(10,20) )#30
print('multi param(10,20,30) = ', multiparam(10,20,30)) #60
- yield : 함수의 종료없이 값 리턴
- 람다 lambda : 함수 객체
# 기존 함수 방식 코딩
def hap(num1,num2) :
res = num1 + num2
return res
print(hap(10,20)) # 결과 30
# 위 함수 람다식으로
hap1 = lambda num1,num2 : num1+num2
# num1, num2 : 매개변수
# num1+num2: return num1+num2
# hap1 : 정의된 함수
hap2 = lambda num1=0,num2=1 :num1+num2 # num1=0, num2=1 : 기본값
print(hap2(100,200)) #num1=100, num2=200
print(hap2(100)) #num1=100, num2=1, 첫번째 매개변수로 지정됨. 중요
print(hap2(0,100)) #num1=0, num2=100
print(hap2()) #num1=0, num2=1
파이썬에서 제공되는 컬렉션
컬렉션 : 여러개의 값을 저장
리스트[ ] : 순서 유지, 추가 순서 유지, 추가/제거/수정 가능
튜플 ( ) : 상수화된 리스트, 추가/제거/수정 불가
딕셔너리 { } : (키,값) 형태의 한 쌍으로 저장
set { }: 중복 저장 불가, 집합의 개념
pop() : 마지막 요소 제거, 리턴
reverse() : 리스트 요소들 역순으로 저장 (역순 조회 = [ : :-1])
insert() : 중간에 요소 추가
count(10) : 리스트 요소중 10의 갯수
index(10) : 10의 인덱스 조회 (find()는 문자열에서만 사용 가능하다, 없는 요소 검색시 오류, 예외처리 필요)
remove() : 특정 요소 제거
extend () : a.extend(b) => a리스트에 b리스트 추가
split() : 문자열을 구분자를 기준으로 분리하여 리스트 형태로 리턴
map() : 각각의 요소에 적용하는 함수를 설정하는 함수
ss1 = ['10', '20', '50', '60', '30', '40', '50', '60', '30']
print(ss1)
print(sum(map(int,ss1))) # ss1리스트 각각에 int함수를 적용
#결과값
#[10, 20, 50, 60, 30, 40, 50, 60, 30]
딕셔너리
keys()
values()
items()
정렬하기
import operator
dic1, list1 = {},[] # 빈 컬렉션 만들기
dic1 = {'Thomas':'토마스','Edward':'에드워드', 'Henry':'헨리', 'Gothen':'고든', 'James':'제임스'}
list1 = sorted(dic1.items(),key=operator.itemgetter(0),reverse=True)
print(list1)
# 영문이름의 역순으로 정렬
# key=operator.itemgetter(0) : 정렬 기준 컬럼 선택, 첫번째 컬럼. 즉 키를 기준으로 정렬 옵션
# reverse=True : 내림차순 정렬
삭제하기
del 딕명['키']
set
: 집합을 표현하는 객체, 중복 불가, 순서 지정 불가, 자동 정렬, 인덱스 사용 불가
- 합집합 함수: union
set1 = {1,2,3,4,5}
set2 = {1,2,3,5,2,4,4,3,5,2,1,1,3}
print(set1)
print(set2)
set3 = {5,6,7,8}
print('set1과 set2의 합집합: ', set1 | set2)
print('set1과 set3의 합집합: ', set1 | set3)
print('set1과 set3의 합집합: ',set1.union(set3)) #union
-교집합 함수
set1 = {1,2,3,4,5}
set2 = {1,2,3,5,2,4,4,3,5,2,1,1,3}
print(set1)
print(set2)
set3 = {5,6,7,8}
print('set1과 set2의 교집합: ', set1 & set2)
print('set1과 set3의 교집합: ', set1 & set3)
print('set1과 set3의 교집합: ', set1.intersection(set3)) #교집합 함수
컴프리헨션(comprehension)
:패턴이있는 list, dictionary, set등 컬렉션을 간편하게 작성
# 연습문제1. 1~10까지의 숫자 중 짝수만 리스트 만들기
nums = [x+1 for x in range(1,11,2)]
nums = [x for x in range(1,11) if x%2 == 0]
#결과 [2,4,6,8,10]
# 연습문제2. 2의 배수이고 3의 배수인 숫자들만 리스트로 생성하기
list2 = [x for x in range(1,101) if x % 2 == 0 and x % 3 == 0]
#결과 [6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96]
# 연습문제 3. 200이하만 새로 dic 만들기
prod = {'건조기':140, 'TV':130, '세탁기':150, '냉장고':200, '컴퓨터':220}
prod1 = {k:prod[k] for k in prod if prod[k] < 200 }
그 외 강사님께 질문드린 람다
def add10(n) :
return n+10
list1 = [1,2,3,4,5]
list2 = list(map(add10,list1))
print(list1)
print(list2)
# 람다 방식
#list3 = list(map(lambda x : x+10, list1)) => map이 리스트의 요소를 하나하나 뽑아줌
#a = (lambda x: x+10)(list1) =>이렇게 풀고 오류나서 질문. 리스트 통째로 던지는 개념임
a = (lambda x: x+10)(list1[0]) # 이렇게 하나씩 보내면 잘 된다.
print(a)
분명 람다 배웠었는데.. 향목님께 배웠었는데..
람다만 기억나고 내용은 기억이 안나네 히.. 멘토님들 생각 많이 나는 하루
말하는 감자들과 씨름하셨던 멘토님들..참사랑
'환경, 에너지' 카테고리의 다른 글
[EMS] Pandas 기본 (0) | 2024.07.03 |
---|---|
[EMS] Python 예외처리, 클래스와 모듈, 정규식 (1) | 2024.07.03 |
[EMS] ESS 이해와 사례분석 (0) | 2024.06.28 |
[EMS] EMS 현장설계 및 제어프로그램 (0) | 2024.06.27 |
[EMS] ZEB 개요 및 기술요소 (0) | 2024.06.21 |