반응형
+자료구조
-
None
; C++, java에서의 NULL, null 이다.
+타입 확인
type(10)
type(2.111)
type("aaa")
if type(param) is str:
print('string type')
else:
print( type(param) )
-정수 integer
키워드는 int
다른 진수.
0b ; binary
0o ; octal
0x ; hexa
0b10101
0o47222
0x61e78
bin(10)
oct(10)
hex(10)
스트링으로 출력된다.
-Float
-복소수 complex
i대신 j를 사용하여 표현
x=7-3j
x.imag
=-3.0
x.real
=7.0
-exam
print 'test\n'
num=1
while num<=100:
print (num)
num=num+1
if a>b: # comment
print('a')
else:
print('b')
family=['adsf','werq','weqrewq']
for x in family:
print('%s %s' % (x, len(x)))
+함수 정의
def func1(x):
...
return y
---문자열
x='123456'
x[0]
'1'
x[2:4] ; 2~3까지를 의미
'34'
x[2:] ; 2~부터 끝까지
x[-1] ; 마지막것을 의미.
x[1:-1] ; 인덱스 1부터 끝하나 전까지. (-1은 마지막 인덱스값을 의미한다.)
x[-2] ; 끝에서 2번째를 의미
+Array
array는 동일한 타입들을 원소로 구성한다.
array.array( typecode, [initializer] )
import array
array.typecodes
'b' ; signed char, int, 1
'B' ; unsigned char
'u' unicode char
'h' signed short
'H'
'i' ; signed int
'I'
'l' ; signed long
'L'
'q' ; signed long long
'Q'
'f' ; float
'd' ; double
+ 자료형 DataType
boolean ; True/False
number ; int, float
string
byte
list ; [ a,b,c ] ordered, any object.
tuple ; ( a,b,c ) immutable list
set ; { a,b,c } unordered. same data type
dictionary ; { name:value , .. }
자료형 확인.
a=1
a=1.2
type(a)
-수
8진수는 0o 또는 0O로 시작
16진수는 0x로 시작
복소수도 지원한다. 단, i대신 j를 쓴다.
지수는 **를 사용
int
float
- 파이썬은 ++, --를 지원하지 않음. a+=1 이런거는 지원.
// 나누기2개는 소수점이하 버림.
-bool 타입
a=True
a=False
-논리연산 ; and or not 사용 가능
not a
t and f
t or f
t != f
-파이썬은 &&, ||를 사용하지 않는다.
>>> 3/2
1.5
>>> int(3/2) # 타입 캐스팅
1
>>> 3//2
1
------------------------------------------------------------------------
-+-String ; 문자열
-대소 비교 operator 사용 가능.
', " 모두 사용 가능. ', "를 사용하려면 연달아 두개를 쓰면 됨. 또는 \를 앞에 붙인다.
\n도 지원.
또는 멀티라인을 위해 """ 이런 스트링을 쓰기도 한다.
multline="""
abcd
defg
ijkl
"""
위와 같이 하면 multiline 변수가 처음에 개행문자가 들어간다. 이를 방지하려면 개행문자가 안들어가게 \를 추가한다. (일반 "도 공통)
multline="""\
abcd
defg
ijkl
"""
print 마지막에 개행을 자동으로 안하려면??? end='' 이라고 추가한다.
print ('Hello', end='')
구분자 지정 sep="#" 이렇게 하면 변수들을 ,로 구분된 것에 공백 구분대신 지정 구분자가 들어감
file=f ; file 변수를 지정해 넣어주면, 파일에 기록함.
+문자열 연산.
+ 로 붙인다. 반복은 *를 사용할수도 있다.
print ("="*50) ; =을 50개 출력
문자열 내의 문자 추출은 [] 로 사용 가능. (인덱스는 0부터 시작)
-도 가능하다. (역 인덱스. 거꾸로 셈. 인덱스 -1은 마지막문자의 인덱스 )
\는 esacpe 문자임.
\n 은 줄 바꿈.
\t ; tab
\0 ; null
\\ ; \문자
\' ; '문자
\" ; "문자
', " 둘 다 사용 가능.
스트링이 길어서 이어서 기록시에는 마지막에 \를 추가한다.
str="This is a py\
thon test."
r'c:\name' => r은 raw string의 의미. escape 키가 작동하지 않음. 그대로 출력. 경로명 입력시 유용.
멀티 라인 입력이 가능 """ 이나 ''' 으로. 가능하다. 처음 시작할 때 뒤에 """\ 이렇게 하고 줄 바꾸면 다음 라인부터 스트링으로 인식.
print("""\
usage: hillo
-h
""")
# 출력 print!
print (a)
print a
print (a,b)
a가 출력되고 '한 칸 띄고' b가 출력됨.
print( a+b )
a,b가 붙어서 출력된다. (스트링)
a="Life is too short"
-슬라이싱 (slicing) ; 일부를 추출.
a[0:4] => 0부터 4보다 작은 인덱스 까지의 의미. 앞 번호를 생략하면 처음 부터, 뒷 번호를 생략하면 끝 까지의 의미, -1은 마지막 인덱스값.
==> 'Life'
a[-1] => t # -1은 마지막 문자의 인덱스.
a[-2] => r # -2는 마지막 2번째 위치.
a[-2:] => rt
a[-5:-1] => shor 주의!! ; 마지막글자가 빠지는 이유. -1은 마지막인덱스값. 따라서 그 전까지이므로.
len(a) => 17
len( a[-5:] ) => 5
a_string[3:11] => 인덱스 3~10까지 추출. (인덱스는 0부터 시작)
a_string[3:-3] => 인덱스 3부터 마지막 3문자 제거.
a_string[:18] => 처음부터 인덱스 17까지. ; 추출된 문자열 길이가 18이 됨.
a_string[18:] => 인덱스 18부터 끝까지
-스탭 ; 건너뛰는 크기.
temp="123456789"
temp[::3]
='147'
temp[::-1] # reversing!
='987654321'
temp[::-2]
='97531'
-포맷 스트링
%d, %s 다 사용 가능.
number=10
day = "three"
print("i eat %d apple. %s days", % (number, day))
i=123
f=3.14
s='Hello'
print( 'i:%9d, f:%5.2f, s:%7s' %(i,f,s)) ; %로 타입지정하면, %순서대로 변수 set 입력
print( 'f:{1}, i:{0}, s:{2}'.format(i,f,s)) ; {인덱스}로 지정하면, .format()으로 변수 입력
print('f: {ff}, i: {ii}, s: {ss}'.format(ii=i, ff=f, ss=s)) ; {키명}으로 지정하면, .format()으로 키명=변수 로 입력
%5.2는 총스트링 길이 5. 그중 소수점 이하 자리는 2개를 의미.
str='hello %s %d' %( 'jake', 10)
'{0:6s}'.format('cat')
'cat ' ; 전체길이 6에서 왼쪽부터 채움. 초과시에는 있는 그대로 출력.
'{0:5d}.format(334)
' 334' ; 5칸 자리 확보후 채움.
'{0:<6d}'.format(1234)
'1234 '
'{0:>6d}'.format(1234)
' 1234'
'{0:07d}'.format(1234)
'0001234'
'{0:#o} {0:#x}'.format(123)
'0o173 0x7b'
'{0:6s}'.format('cat')
'cat ' ; 전체길이 6에서 왼쪽부터 채움. 초과시에는 있는 그대로 출력.
'{:>6s}'.format('cat') ; right alignment
' cat' ; 전체길이 6 오른쪽부터 채움.
'{0:5d}.format(334)
' 334' ; 5칸 자리 확보후 채움.
'{0:<6d}'.format(1234)
'1234 '
'{0:>6d}'.format(1234)
' 1234'
'{0:07d}'.format(1234)
'0001234'
'{0:#o} {0:#x}'.format(123)
'0o173 0x7b'
'{:5.3f}'.format(3.1)
3.100 # 전체 5글자 소수점이하 3자
'{:6.3f}'.format(3.1)
' 3.100' # 앞에 공백하나 추가해서 전체 6자. 소수점이하 3자. 정수부 2자.
'{:07.3f}'.format(3.1)
003.100 # 공백대신 앞에 0으로 채움. 전체7자. 소수부 3자. 정수부 3자.
print('Hello Python!'.center(20)) ; 전체크기20 컬럼. 중앙 정렬.
print('Hello Python!'.rjust(20)) ; 전체크기 20, 오른쪽 정렬.
print('Hello Python!'.ljust(20))
print('Hello Python!'.zfill(20))
print('hello python!'.capitalize()) ; 첫글자만 대문자로
print('hello python!'.upper()) ; 전체 대문자
print(range(1,10)) ; 출력안됨.
print( list(range(1,10) ) ; 출력됨.
- 문자열 함수
a="hi there"
a.upper(), lower()
a.count('e')
a.count('hi')
a.find('t') ; 없으면 -1 리턴
a.find('there')
a.index('t') ; 없으면 에러 발생.
a=","
a.join('abcd') ; 문자열 join
==> 'a,b,c,d'
rstrip() ; 문자열 뒤쪽에서 공백, 리턴, 탭 등의 문자들을 삭제한다.
rstrip([chars]) ; chars 문자들을 모두 white space char로 취급.
'mississippi'.rstrip('ipz') => mississ
lstrip()
strip()
a.replace('life', ' leg')
a.split()
['life', 'is', 'too', 'short']
a="a:b:c:d"
a.split(':') ; 구분문자로 나누어 리스트로 반환
; split('delimeter', count) ; 몇 번 분할할지를 지정할 수 있다.
splitlines() ; 줄단위로 토크닝.
lower() ; 소문자로
upper()
수를 문자열로 변환
str(123)
import string
정의된 값.
string.digits = '0123456789'
string.hexdigits = '0123456789abcdefABCDEF'
string.ascii_lowercase = > a~z
string.ascii_uppercase => A~Z
find, rfind, index, rindex, count, lower, split, capitalize, atol, atoi, atof, join, lstrip, rstrip, strip,
upper, zfill, replace, ljust, rjust, center
str.partition(sep) ; 세개로 분리. 전, sep, 후
str.rpartition(sep)
str.replace(old, new [,count])
+ URL GET 쿼리스트링을 dictionary로 토크닝.
query='user=aaa&database=master&password=12idid'
a_list = query.split('&') ; &를 기준으로 자름. list로 리턴
a_list_of_lists = [v.split('=', 1) for v in a_list if '=' in v] ; [['user','aaa'],['database','master'],['password','12idid']]
a_dict = dict(a_list_of_lists) ; 리스트를 dictionay로 변환. ; { 'user':'aaa', 'database','master', 'password','12idid'}
+ string vs byte
둘 다 immutable ; 변경 불가.
by=b'abcd\x65' ; by = b'abcde'
type(by) ; class 'bytes'
by+=b'\xff'
len(by)
byte를 변경가능하도록 하려면? bytearray로 변환한다.
byarr=bytearray(b'abcde')
byarr[0]=102
byte와 string은 합쳐지지 않는다. 형 변환 필요.
by.decode('ascii')
by = a_string.encode('utf-8')
+ bool
True/False
비교 연산자의 결과로 사용.
3>5
False
4<6
True
'a'=='b'
False
3.14!=3.14
False
+논리연산자
and &, or |, not
- 내장함수 bool()은 0과 비어있는 객체의 경우 False를 리턴한다.
bool(0)
False
bool(1)
True
bool(4.5)
True
bool([])
False
bool('a')
True
'Python' 카테고리의 다른 글
Python 강좌5 List (0) | 2018.03.20 |
---|---|
Python 강좌4 정규식 regular expression (0) | 2018.03.19 |
Python 강좌2 if/for/while/function (0) | 2018.03.15 |
Python 강좌1. 산술연산, range (0) | 2018.03.14 |
Linear regression (0) | 2018.03.13 |