본문 바로가기
기본적인프로그래밍/python

[Python] basic2 (수업 내용 정리, Deep learning 기초 -part 2)

by 고양이에빠지다 2020. 11. 10.
반응형

저번 포스팅과 더불어 추가 내용 정리입니다.

 

- *

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부터시작)와 해당위치의 값들을 가져옵니다.

 


잘 보셧다면 주변 광고 한번씩만 클릭 부탁드립니다! 감사합니다!

728x90
반응형

댓글