저번 포스팅과 더불어 추가 내용 정리입니다.
- *
python에서 *을 사용하게 되면 곱하기가 되기도 하고 unlist가 되기도 합니다.
>>> 2*3
6
>>> range(10)
range(0, 10)
>>> [*range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
- list 다루기
1) list는 list[숫자:숫자]를 이용하면 되고, 주의할점은 python 0-based counting이기 때문에 조심해햐 합니다.
2) 홀수, 짝수 등과 같은 등차수열을 위해서는 list[숫자:숫자:얼마나띄울거냐 숫자]를 사용합니다.
3) reverse string의 경우 list[::-1]를 이용하면 거꾸로 읽게 됩니다.
>>> test=[*range(100)]
>>> test[1:20] # list에서 숫자 뽑기!
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> test[1:20:3] # 1~20에서의 사이에서의 3 단위로 뽑기
[1, 4, 7, 10, 13, 16, 19]
>>> test=[*range(10)]
>>> test
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> test[::-1] # 거꾸로 읽기
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>>
- string formating (글자 치환!)
python에 글자 치환 방법은 여러가지 방법이 있습니다.
1) +
'Hello' + 'world' + i (변수)
2) C-like formatting
'Hello %s %s' % ('world',i)
%s decimal, %c char, %s string (주로 많이사용되는 것들)
3) .format
'Hello {} {}'.format(world,i)
'Hello {0} {1}'.format(world,i) # 숫자를 이용해서 순서변경 가능
4) f string # 가장 빠른 방법
f'Hello {l} {i}'
>>> 'Hello'+' world'
'Hello world'
>>> i='HaHaHa'
>>> 'Hello %s %s' % ('world',i)
'Hello world HaHaHa'
>>> 'Hello {} {}'.format('world',i)
'Hello world HaHaHa'
>>> 'Hello {1} {0}'.format('world',i)
'Hello HaHaHa world'
>>> f'Hello {i} {i}'
'Hello HaHaHa HaHaHa'
>>>
- call by value, call by reference! 중요!!
코드를 제작할때 변수할당시에 주의해야할 것이 Call by value, Call by reference
Call by value : 값에 의한 호출
원래의 값 보존 그러나 메모리가 늘어남.
Call by reference : 참조에 의한 호출
직접참조를 해서 빠르게 진행가능, 그러나 원래의 값을 바로 받기 때문에 영향을 받는다.
Call by reference 를 이용하기 보다는 조금 메모리를 들더라도, Call by value를 사용하는 것을 추천합니다.
list,set,dictionary의 경우 Call by reference이기 때문에 사용시 주의
예시는 다음과 같다.
# Call by value
>>> a=1
>>> b=2
>>> c=a
>>> a,b,c
(1, 2, 1)
>>> a=3
>>> a,b,c
(3, 2, 1)
>>>
# Call by reference
>>> a=[1,2,3,4]
>>> c=a
>>> a,c
([1, 2, 3, 4], [1, 2, 3, 4])
>>> a[0]=10
>>> a,c
([10, 2, 3, 4], [10, 2, 3, 4])
>>>
# Call by reference
>>> a={0,1,2,3}
>>> b=a
>>> a,b
({0, 1, 2, 3}, {0, 1, 2, 3})
>>> a.add(10)
>>> a,b
({0, 1, 2, 3, 10}, {0, 1, 2, 3, 10})
>>>
- tuple wrapping
바로 예시로 보여드립니다.
>>> x=1
>>> y=2
>>> x,y=y,x
>>> x
2
>>> y
1
>>>
한꺼번에 처리가 가능하고 비슷한 경우 for loop에서 적용가능합니다.
>>> test=[1,2,3,4]
>>> for i in test: print(i)
...
1
2
3
4
>>> test=[(1,2),(1,3),(1,4)]
>>> for x,y in test: print(x,y)
...
1 2
1 3
1 4
>>> test=[(1,2,3),(1,3,5),(1,4,8)]
>>> for x,y,z in test: print(x,y,z)
...
1 2 3
1 3 5
1 4 8
>>>
또 다른 예시
>>> test='test'
>>> for i in enumerate(test): print(i)
...
(0, 't')
(1, 'e')
(2, 's')
(3, 't')
>>> for i,j in enumerate(test): print(i,j)
...
0 t
1 e
2 s
3 t
>>> test_dic={'test':1,'test1':20,'tesr3':30}
>>> for i in enumerate(test_dic):
... print(i)
...
(0, 'test')
(1, 'test1')
(2, 'tesr3')
>>>
enumerate의 경우 차례대로 순서(0부터시작)와 해당위치의 값들을 가져옵니다.
잘 보셧다면 주변 광고 한번씩만 클릭 부탁드립니다! 감사합니다!
'기본적인프로그래밍 > python' 카테고리의 다른 글
[jupyter] 설치부터 외부접속 가능하게 설정 (Ubuntu, linux용) (2) | 2020.12.17 |
---|---|
[python] Ubuntu에서 기본 python path 변경하는 방법 (0) | 2020.12.03 |
[Python] basic (수업 내용 정리, Deep learning 기초 -part 1) (0) | 2020.11.10 |
[Python] 파이썬 pip 설치 속도 올리기! (2) | 2020.11.09 |
[Python] Mortal Fibonacci Rabbits (0) | 2020.11.07 |
댓글