음머어's 까망별

블로그 이미지
무지 인간의 첫 걸음..
by 까망별 음머어
  • 295,710Total hit
  • 74Today hit
  • 148Yesterday hit

1. 튜플은 () 를 쓰지 않고 값을 넣으면 자동으로 튜플이 된다.
   t = 1,2,3
2. 튜플은 일반 괄호와 햇갈릴 수 있으므로 반드시 ',' 가 들어가야 한다.
    t  = (1,)     
    t  = 1,
    결국  ',' 를 이용한 값의 입력은 튜플을 이용한 값의 입력이라는 의미와 동일할 것 같군..
3. 리스트와 튜플은 내장함수 list(), tuple() 상호 변환이 가능하다.
    L = list(T)
    T = tuple(L)
4. 튜플은 아래 4가지에 사용된다.
   함수의 결과  x, y = calc(5, 4)
   문자열 포매팅 '%s' %('어이쿠')
   튜플 값을 함수 인자로 사용  args=(4,5); calc(*args)
   그 외의 고정된 값 표현
5.url 다루기, 쪼개주고 합해준다.
   import urlparse
   t= urlparse.urlparse('http://search.daum.net/search?nil_ch=&rtupcoll=&w=tot&q=python+urlparse')
   print t
   s = urlparse.urlunparse(t)
   print s
   b = urlparse.urljoin('http://search.daum.net/search?nil_ch=&rtupcoll=&w=tot&q=python+urlparse', 'a.html')
   print b
6. 사전에서 문자열, 숫자, 튜플(변경 불가능)은 키가 될 수 있지만, 리스트, 사전(변경가능)은 키가 될 수 없다.
   def add(a,b):
       return a+b
   def sub(a,b):
       return a-b
   d = {}
   d[0] = add
   d[1] = sub
   print d[1](1,2),  d[0](1,2)
7. dict() 는 사전형 객체를 생성해준다.
   a= dict(one=1, two=2)
   print a
8. zip 은 연속형 자료형을 키와 값으로 묶어 주고 이를 사전형으로 리턴한다.
   key = (1,2,3,4,5)
   value =('a','b','c','d','e')
   b = zip(key,value)
   print b
9. 사전의 메소드
    keys(), values(), items(), in, clear(), copy(), get(), setdefault(), update, popitem, pop
10. globals(), locals() 전역/지역 심볼들의 사전을 볼 수 있다.
11. set 자료형은 변경불가능한 데이터들의 리스트를 인자로 가지고 있으며,
     중복된 값을 스스로 제거하는 해쉬라고 보면 된다.
     관련 메소드는, len(), in, not in, issubsset(), issuperset(), union(), intersection(), difference(),
     symmetric_difference(), copy() 등이 있다.
      집합과 관련된 연산자로 |(합집합), &(교집합), - (차집합), ^(배타집합) 등이 있다.
12. set 은 값의 변경이 가능하며, frozenset 은 값의 변경이 불가능하다.
13. 약식 연산자도 사용 가능하다. |=, &=, -=, ^=
14. 카피는 shallow(참조형 복사), deep(데이터복사) 이 있다.
     import copy
     a = [1,2,3] ; b = copy.copy(a); c = copy.deepcopy(a);
15. 형변환
     숫자형 : int(), float(), long()
     시퀀스(문자열은 아래) : list() , tuple()
     문자열 : str(), repr() <-- 형이 가지고 있는 정보 그대로를 노출, `(역슬래쉬)`
16.  형변환된 문자열이 eval을 통한 제기능을 발휘하려면, repr을 사용하는 것이 좋다.
17. L.split(), ''.join(L) 을 이용한, 리스트 <-->문자열 전환
18. ascii
     print chr(97), ord('a')
19. int를 이용하여 다른 진수에서 10진수로 변환이 가능하다.
    int('64', 16) <<-- 16진수 64를 10진수로~
20. locale 모듈을 이용하여 , 숫자를 ','로 나뉜 문자열로 변환해 준다.
    import locale
    locale.setlocale(locale.LC_ALL, "")
    print locale.format("%d", 1234567890, 1)    

저작자 표시 비영리
신고
TRACKBACK 0 AND COMMENT 0
1. 정수형 상수 ( 8진수는 0을 붙이고, 16진수는 0x를 붙인다.)
2. 최대 정수 값의 확인은 sys.maxint
3. 정수형으로 표현 불가능한 큰 수는 Long 형 정수로 표현 가능하면, 범위는 메모리가 허용하는 한 무한대이다.
   숫자의 끝에 l, L 을 붙이면 된다.
4. 오차가 없는 정확한 계산을 위해서는 Decimal 인스턴스를 사용하면 된다.
    e= 0.0
    for k in range(100000):
         e += 0.00001
    print e
5. ** 의 의미는 지수를 의미한다.
     print 2 ** 3 
     8
6. and, or로 연산을 수행할 때, 1 and 2 의 결과가 결정되는 값이 나오게 된다.
    1 and 2 , 1 or 2
    2  1
7. math 함수로 pi, e, sin 등의 값을 불러올 수 있으며, sqrt 같은 연산을 수행할 수 있게 된다.
8. 시퀀스 자료형의 특징
    인덱싱 [k]
    슬라이싱 [s:t]
    연결 +
    반복 *
    멤버쉽테스트 in
    길이 len
9. 문자열은 값의 변경이 불가능하다 .그러므로 변경이 아니라 새로운 문자열을 만드는 작업을 수행해야 한다.
10. 원하는 문자열을 받아 쓸 수 있는 foramtting
     format = 'name = %s, age = %d'
     print format % ('kim',31)
     name = kim, age = 31
11. 사전을 이용한 formatting
     format  = 'name  = %(name)s, age = %(age)s'
     print format %{'name' : 'kim', 'age' :'31'}
12. split 을 이용해 문자열을 나눌 수 있고, 그것의 역으로는 합칠문자.join(리스트) 를 쓰면된다.
13. 문자열을 계속해서 이어 붙이는 것보다 (+=)
     리스트에  append 해서 나중에 join 하는 것이 수백배 빠르다.
14. 유니코드형태로 세면 정확한 길이를 알 수 있다.
     print len('파이썬 어렵다.') , len(unicode('파이썬 어렵다.'))
     14 8
15. 문서 문자열은 모듈 문자열, 클래스 문서 문자열, 함수 혹은 메소드 무서 문자열로
     사용 가능하며, 이러한 것들은 바로 도움마로 사용가능하다.
     각 문자열은 __doc__ 이라는 내장 멤버에 저장된다.
16. 리스트를 스택으로 쓰기.
     append, pop
17. 리스트를 큐로 쓰기 : pop 에 값을 넣으면 해당 값이 리턴되고 빠진다.
     append, pop(0)
18. 리스트에 sort에 원하는 함수를 지정해 넣을 수도 있다.
    def mycmp(a1, a2):
         return cmp(a2, a1)
    [1,2,3,4,5].sort(mycmp)
19. 리스트의 역순 정렬은
    [1,2,3,4,5].sort(reverse=True) 라고 사용하면 된다.
20. 하지만, 객체의 sort 메소드는 리턴 값이 없기 때문에, sorted() 함수를 이용하여 리턴 값을 받을 수 있다.
     사용법은 리스트와 동일하다.(위의 18, 19 사용가능)
21. 정렬을 하고 결과를 뽑고 원상태로 돌아가는 것보다는, 역순으로 데이터를 뽑는 게 더 효율적이다.
    reversed 는 iterator 를 리턴한다.
     for e in reversed(L) :
              print e
22. 리스트 안에서 for문을 이용한 리스트 구성이 가능하다.
     L = [ k * k for k in range(10) ]
     L = [ k for k in range(10) if k%3 == 0 ] <-- 이 경우는 참일 경우만 리스트에 추가된다.
23. 순환참조는 reference count  가 0 이 되지 않으므로, garbage collection 에 방해가 된다.
      test = ['mine']
      test.insert(0, test)
24. sys.argv[1:] 로 사용하면 다수의 인수를 받을 수 있다.
25. getopt 모듈의 getopt 함수 를 사용하면, 명령행의 인수 리스트에서 옵션을 분리해 낸다.
      getopt(인수리스트, 옵션문자들) 
       <--- 인수리스트는 sys.argv[1:], 옵션문자들은 'abc:d:' ,:의 의미는 인수를 갖는다는 의미
26. 리스트에서 * 를 이용한 데이터복사는 참조형의 복사일 수 있으므로 주의한다.
27. 배열은 array를 사용해도 무방할듯. array(typecode, [리스트]) 로 사용한다.
     기본 명령어는 리스트와 동일.
28. 디렉토리의 파일 목록을 얻어오려면, glob 모듈의 glob 함수를 사용한다.
29. 파일의 종류를 알려면 , os.path 모듈의 isfile(path), isdir(path), islink(path), ismount(path), exists(path) 등의
     참과 거짓을 알수 있는 os.path의 함수를 사용하면된다.
30. os.path.getsize(path) , os.path.getatime(path) <-- 최근접근시간, os.path.gettime(path) <-- 최근 수정시간
31. 30번의 결과를 편하게 보고 싶다면, import time 해서 결과물을 ctime 으로 보면 문자열로 변환해 준다.




저작자 표시 비영리
신고
TRACKBACK 0 AND COMMENT 0
1. string 에서의 줄 바꿈은 \ 를 사용하면 된다.
   ex)    print '나는 정말 파이썬이 \
                   신기해 ~~~ 증말이양~'
2. string에서  여러 줄바꿈 표시를 입력하는게 번거롭다면, ''' 를 사용할 수 있다.
   ex)    print ''' 난 이것도 
                       신기하넹
                       므헬헬헬~ '''
2. 데이터의 자료형 확인은 type(확인할대상) 으로 확인할 수 있다.
    ex) a = type("12431")
          if a == int :
                 print "integer"
          elif a == str :
                 print "string"
           else :
                 print "not integer"
3. eval : 문자열로 들어온 식을 수행한다.
    ex) a = eval('a+4')
           print a
4. exec :  문자열로 들어온 문을 수행한다.
    ex) exec 'a= 3+1'
           print a
5.  위의 eval, exec가 빈번히 사용되고, 이로인해 해석하는데 시간이 오래 걸린다면,
     compile(string, filename, kind) 를 사용하면된다. .... 그런데.. 흠.. 이해가 잘 안가니 나중으로 패쓰~
6. 키보드 입력은 raw_input을 사용하면 된다.
    웃긴게... 계산식도 처리해 준다.
   ex) inputdata = raw_input("Add two numbers --> ")
         Add two numbers --> 30 + 16 
         46
7. print 에서 ',' 는 띄어쓰기로 출력되고, ';' 는 순차적 입력문으로 인식한다.
   ex) print 1,;print 2
        1 2
8. 파이썬 자료형 중 헷갈리는 녀석들
     list :  순서를 가지는 임의 객체의 집합          --> [] 사용
           ex) ['oragne', 'kiwi']
     dictionary : 순서를 가지지 않는 임의 객체의 집합. key로 값을 꺼낸다. --> {} 사용
           ex) {'orange':1000, 'kiwi':2000}
     tuple : 순서를 가지는 임의 객체의 집합. 내용 변경 안됨.   --> () 사용
           ex) ('orange', 'kiwi')
9. 문자열, 리스트, 튜플에서 원하는 순서의 값만을 취하는 방법을 slicing 이라고 한다.
    방법은 대상[start:stop:step] 을 쓰면 된다. -->> step 부분이 재미있군
    ex) s = '1234'
          print s[::-1]
          4321
10. 문자열은 값이 변경되지 않는다.
    ex ) s= '1234'; s[0] ='2'     --> 에러발생
11. 부분 문자열 찾기 in, not in 으로 True, False 가 나온다.  쉽다!
    ex ) s= '1234' ; 
           print '2' in s, '5' in s;
12. list
     append(값), del[0], reverse(), sort(),
     결정적으로 l[0] = 5 라는 값의 변경이 먹힌다.
13. tuple 은 비슷하지만 값의 변경이 불가능하다.
14. dictionary
     keys(), values(), d[키값], items() <-- items 는 key,value의 튜플을 리스트 형태로 제공
15. 파이썬에서는 객체와 이를 지칭하는 이름의 참조형으로 데이터가 존재한다.
     가령  a=1 ; a=2; 는 1이라는 객체를 a가 바라보고 있다가, 2라는 객체를 바라보게 됨을 의미한다.
     a의 저장공간에 1,2가 들어가는 것이 아니다.
16. type에 대한 전체 리스트를 보고 싶다면,
     import types ; dir(types) 하면 된다.
17. 객체는 자신을 가르키고 있는 참조형의 갯수를 항상 기억하고 있는데,
     이것을 reference count  라고 한다. 이 값이 0이 될때, garbage collection 기능에 의해 메모리는 환원된다.
     import sys; a=1234; sys.getrefcount(a);
18. 객체의 주소값을 알고 싶다면,
     a = 1234; id(a); 하면 된다.
19. 같은 값에의 참조 확인은 is 를 사용하면된다.
     ex) a=500; b=a; a is b; -->> True
20. C에서의 case 문과 같은 효과는 if 문에서도 낼 수 있겠지만, dictionary로도 표현할 수 있다.
21. for 문도 else 문과 조합해서 사용할 수 있다.
22. for 문에서 인덱스와 값의 조합을 받고자 한다면 enumerate(L) 을 사용한다.
     ex) L =['one', 'two' , 'three']
           for k, num in enumerate(L):
                  print k, num
23. 함수에서는 default 인수를 지정해 줄 수 있다.
      ex) def add(a, b=3) :
               return a + b
            print add(1) ----> 4출력
  


       
저작자 표시 비영리
신고
TRACKBACK 0 AND COMMENT 1

ARTICLE CATEGORY

모든 이야기 (77)
독백 (22)
MySQL (25)
Oracle (7)
영화 (6)
Linux (3)
DW(Data Warehouse) (0)
(7)
음악 (1)
Python (3)
Postgresql (2)

ARCHIVE