티스토리 뷰

beginner/파이썬 기초

2019.01.30

johh 2019. 1. 30. 13:23
2019.1.30 조환희
In [ ]:
#복습
In [6]:
l=[]
In [7]:
l
Out[7]:
[]
In [8]:
l+=[1,2,3,]
In [9]:
l
Out[9]:
[1, 2, 3]
In [10]:
l.append(4) #l.append([4])를 하게 되면 l=(1,2,3,[4])가 되어버린다.
In [11]:
l
Out[11]:
[1, 2, 3, 4]
In [12]:
a=[3,2,5,1,4]
In [13]:
sorted(a)
Out[13]:
[1, 2, 3, 4, 5]
In [18]:
help(sorted)
Help on built-in function sorted in module builtins:

sorted(iterable, /, *, key=None, reverse=False)
    Return a new list containing all items from the iterable in ascending order.
    
    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order.

In [19]:
sorted(a, reverse=True)
Out[19]:
[5, 4, 3, 2, 1]
In [107]:
b=[3,2,5,1,4]
In [108]:
b.sort()
In [109]:
b
Out[109]:
[1, 2, 3, 4, 5]
In [110]:
b.sort(); b.reverse()
In [111]:
b
Out[111]:
[5, 4, 3, 2, 1]
In [24]:
b[2:3] #결과는 리스트
Out[24]:
[3]
In [25]:
b[2] #결과는 해당 부분의 원소
Out[25]:
3
In [26]:
# 튜플 (수업시작)
In [27]:
#튜플은 리스트보다 시스템적으로 간단하다.
#sort는 안되고 sorted를 해야한다.
In [32]:
#튜플의 형태
t1=()
t2=(1,)
t3=(1,2,3)
t4=1,2,3
In [36]:
t1 #빈 튜플
Out[36]:
()
In [37]:
t2 # 원소가 하나일때
Out[37]:
(1,)
In [46]:
t6=(1) # 원소가 하나일 때 
t6
Out[46]:
1
In [49]:
len(t2)
Out[49]:
1
In [51]:
type(t2)
Out[51]:
tuple
In [52]:
type(t6)
Out[52]:
int
In [34]:
t3
Out[34]:
(1, 2, 3)
In [35]:
t4
Out[35]:
(1, 2, 3)
In [45]:
t5=('z','x',('zx','cd'))
In [54]:
t5
Out[54]:
('z', 'x', ('zx', 'cd'))
In [40]:
#인덱싱과 슬라이싱은 리스트와 동일
In [41]:
#튜플 더하기, 곱하기가능. 안에 있는 원소 자체가 바뀌는게 아니라. 그냥 두개를 연결시키는 개념?
#len(), type(), help()도 된다.
In [42]:
type((1,2))
Out[42]:
tuple
In [55]:
len((1,2,'z'))
Out[55]:
3
In [56]:
#연습문제
In [64]:
1,2 #자동적으로 튜플이 된다.
Out[64]:
(1, 2)
In [58]:
a,b = [1,[2,3]] #a,b는 (a,b)인 튜플이다. 튜플과 리스트가 서로 짝이 맞으면 값이 할당된다. 파이썬만의 편의성.
In [59]:
a
Out[59]:
1
In [60]:
b
Out[60]:
[2, 3]
In [61]:
#(1)과 (1,)의 차이점은?
In [62]:
#(1)은 그냥 정수 숫자이고, (1,)은 원소가 1개인 튜플이다.
In [63]:
t=(1,2,3) #튜플은 원소를 바꿀 수 없다.
t[0]=0
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-63-8e2a00d261fa> in <module>()
      1 t=(1,2,3)
----> 2 t[0]=0

TypeError: 'tuple' object does not support item assignment
In [65]:
#딕셔너리 (리스트와 마찬가지로 수정가능)
In [66]:
d={'이름':'홍길동','나이':37} # key : value
In [67]:
d[0] #딕셔너리에는 순서가 없다. 그러므로 1번째 값을 뽑아내기 위해서는 다른 방법을 사용해야 한다.
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-67-123a9cc6df61> in <module>()
----> 1 d[0]

KeyError: 0
In [68]:
d['이름'] # key값을 입력해야 한다.
Out[68]:
'홍길동'
In [75]:
d1={999 : 1.23} # 키 값이 숫자여도 된다.
In [76]:
d1[999]
Out[76]:
1.23
In [72]:
# 키 값을 알아야만 사용할 수 있나?
In [73]:
d.keys() # 키 값만 빼내는 방법.
Out[73]:
dict_keys(['이름', '나이'])
In [77]:
d2={} # 빈 딕셔너리
In [78]:
d2
Out[78]:
{}
In [80]:
#값에 딕셔너리나 튜플, 리스트를 넣을수 있다.
d3={22 : [2,3,4]}
In [83]:
d3[22]
Out[83]:
[2, 3, 4]
In [84]:
d3[33] = [5,6,7] # 딕셔너리에 없는 값을 할당하면 딕셔너리에 추가된다.
In [85]:
d3
Out[85]:
{22: [2, 3, 4], 33: [5, 6, 7]}
In [87]:
del d3[33] #삭제기능이 있지만 파이썬에서는 잘 사용하지 않는다.
In [88]:
d3
Out[88]:
{22: [2, 3, 4]}
In [131]:
d4={'a':1, 'b':2} # 키 값을 바꿀수도 있다.
In [132]:
d4['a']=99
In [133]:
d4
Out[133]:
{'a': 99, 'b': 2}
In [134]:
d4['c']=20
In [135]:
d4.keys() #파이썬 3로 넘어오면서 리스트가 아닌 자료형의 형태로 넘겨준다.
Out[135]:
dict_keys(['a', 'b', 'c'])
In [136]:
#리스트로 바꿔주고 싶으면
list(d4.keys())
Out[136]:
['a', 'b', 'c']
In [137]:
for k in d4.keys():
    print(k)
a
b
c
In [140]:
d4.values() # value 리스트 만들기
Out[140]:
dict_values([99, 2, 20])
In [141]:
d4.items()   # key value 쌍 얻기
Out[141]:
dict_items([('a', 99), ('b', 2), ('c', 20)])
In [121]:
d4.clear() # d4를 모두 지우는 방법. 잘 사용하지 않는다. 그냥 d4를 빈 딕셔너리로 정의하면 된다. d4={} , d4=None 메모리 관련해서 삭제할때 사용
In [122]:
d4
Out[122]:
{}
In [123]:
#해당 key가 딕셔너리 안에 있는지 조사하기 in
In [126]:
a = {'name':'pey','phone':'0119993323','birth':'1118'}
In [127]:
'name' in a
Out[127]:
True
In [129]:
'pey' in a
Out[129]:
False
In [128]:
'email' in a
Out[128]:
False
In [142]:
#연습문제
In [143]:
d0={}
In [145]:
d0[1]='a'
d0[2]='b'
In [146]:
d0
Out[146]:
{1: 'a', 2: 'b'}
In [147]:
d0[3]=[4,5,6]
In [148]:
d0
Out[148]:
{1: 'a', 2: 'b', 3: [4, 5, 6]}
In [149]:
d0[1]=999
In [150]:
d0
Out[150]:
{1: 999, 2: 'b', 3: [4, 5, 6]}
In [152]:
3 in d0
Out[152]:
True
In [153]:
#집합 자료형
In [154]:
l=[1,2,3,2,1,] #리스트에서 자료가 아주 많을때 중복된 것을 어떻게 처리해야 할 까?
In [156]:
s=set(l)
In [158]:
s
Out[158]:
{1, 2, 3}
In [159]:
s=set({1,2,3,4,5,4,4,4,4,4,})
In [160]:
s
Out[160]:
{1, 2, 3, 4, 5}
In [161]:
s=set("Hello") #문자 하나하나를 리스트 보듯이 다룬다.
In [162]:
s
Out[162]:
{'H', 'e', 'l', 'o'}
In [163]:
list(s) # list로 변환
Out[163]:
['H', 'e', 'o', 'l']
In [164]:
tuple(s) # tuple로 변환
Out[164]:
('H', 'e', 'o', 'l')
In [165]:
# &: 교집합, |(\위에 있는 기호): 합집합, -: 차집합
In [166]:
s={1,2,3}+{4,5} # 집합은 + 기호를 사용할 수 없다.
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-166-4f0cdd9c4303> in <module>()
----> 1 s={1,2,3}+{4,5}

TypeError: unsupported operand type(s) for +: 'set' and 'set'
In [169]:
s={1,2,3} | {4,5}
In [170]:
s
Out[170]:
{1, 2, 3, 4, 5}
In [171]:
#연습문제
In [172]:
set([1,2,2,3,4,4,5])
Out[172]:
{1, 2, 3, 4, 5}
In [174]:
a=set([1,2,3,4])|set([3,4,5,6])
In [175]:
set(a)
Out[175]:
{1, 2, 3, 4, 5, 6}
In [183]:
set(range(10)) - {0,1,2,3,5,6,8,9} # range(n) : 0부터 n-1까지 나열
Out[183]:
{4, 7}
In [186]:
tuple(range(10)) #주의 range같은 인터프리터를 변수로 사용하지 말 것.
Out[186]:
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
In [187]:
#불 자료형 (참 or 거짓)
In [190]:
#조건식. 같은가? 다른가? 큰가? 작은가?
In [191]:
1==1  # == : 같은지 판별해 달라.
Out[191]:
True
In [192]:
2>1
Out[192]:
True
In [194]:
1>2
Out[194]:
False
In [195]:
1!=2 # != : 다른지 판별해 달라.
Out[195]:
True
In [196]:
# >= : 이상, <= : 이하.
In [197]:
#"python" : 참 
#"" : 거짓 
#[1, 2, 3] : 참 
#[] : 거짓 
#() : 거짓 
#{} : 거짓 
#1 : 참 
#0 : 거짓 
#None : 거짓 
In [198]:
bool(55)  # 0이 아니므로. (형태변환에 이용)
Out[198]:
True
In [199]:
1+True #파이썬은 True,False를 숫자로 본다. 즉 사칙연산에 활용할 수 있다.
Out[199]:
2
In [200]:
1+False
Out[200]:
1
In [201]:
type(True)
Out[201]:
bool
In [202]:
l=[True,False,True,True,False] 
# 수만개의 리스트 중 1개의 False가 있는지 확인하기 위해 모두 곱했을때 0이 나오면 False의 존재여부를 확인
# 모두 합 했을때 원소의 개수와 합의 크기가 다르면 False가 있음
In [204]:
a is b # a와 b 객체가 동일하냐?
Out[204]:
False
In [205]:
#자료형의 값을 저장하는 공간, 변수
In [209]:
l=[1,2,3]      
l2=l[1:]        # 슬라이스를 이용하면 l2는 l을 참조(위치값 설정)한 것이 아니라 값만 복사했다.(메모리 안에 값이 쓰여진다.)
l2              # l=l2 이렇게 했다면 l이던 l2이건 같은 값의 위치를 가르키고 있기때문에 참조이다.
                # 메모리를 적게 사용하도록 하기 위해 프로그래밍을 할 때 되도록이면 참조를 한다.
Out[209]:
[2, 3]
In [210]:
#copy모듈 거의 안씀
In [211]:
(a,b)='python', 'life' # 튜플과 튜플을 할당
In [212]:
a
Out[212]:
'python'
In [213]:
b
Out[213]:
'life'
In [215]:
(a,b,c)='python', 'life' # 대응이 안되므로
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-215-7057e3ebda3f> in <module>()
----> 1 (a,b,c)='python', 'life' # 대응이 안되므로

ValueError: not enough values to unpack (expected 3, got 2)
In [216]:
a, b = 1, (2,3)
In [217]:
a
Out[217]:
1
In [218]:
b
Out[218]:
(2, 3)
In [219]:
c = 1, 2      # c는 튜플이다.
In [220]:
c
Out[220]:
(1, 2)
In [222]:
a=3
b=5
a, b = b, a    # a와 b의 값을 치환 (파이썬에서만 가능)
In [223]:
a
Out[223]:
5
In [224]:
b
Out[224]:
3
In [226]:
l=[1,2,3]
l2=l.copy() #데이터가 단순하고 로직이 복잡한 경우 그냥 카피하고 싶을때.
l2          
Out[226]:
[1, 2, 3]
In [227]:
l2[0]=99
l2
Out[227]:
[99, 2, 3]
In [228]:
l            # 카피는 l2값을 변화시켜도 원본 데이터에 영향이 가지 않는다.
Out[228]:
[1, 2, 3]
In [238]:
a=[0,0,0]
l=[a,a]
a[0]=99 
l
Out[238]:
[[99, 0, 0], [99, 0, 0]]
In [239]:
l[0][0]=-1 # 첫번째 원소의 첫번째원소를 -1로 바꾼다.
l       # 두번째 원소 a도 첫번째 원소 a와 같은 곳을 가르키고 있기때문에 첫번째 원소 a의 값만 변경해도 두번째 원소 a의 값도 변경된다.(참조)
Out[239]:
[[-1, 0, 0], [-1, 0, 0]]
In [240]:
#연습문제
In [248]:
a,(b,c)=(1,(2,3))
In [249]:
a
Out[249]:
1
In [250]:
b
Out[250]:
2
In [251]:
c
Out[251]:
3
In [262]:
a=b=c=99            # (a,b,c)=[99]*3 도 가능
a,(b,c)
Out[262]:
(99, (99, 99))
In [253]:
l=[1,2,3]
l2=l[1:]; l2[0]=99
l2
Out[253]:
[99, 3]
In [255]:
l[1:]=[99,99,99]  # 1 뒷 부분을 99,99,99로 바꾸겠다.
l
Out[255]:
[1, 99, 99, 99]
In [258]:
l3=l.copy()         # l2 = l[:]도 가능. ':' 는 리스트 안에 있는 모든 원소를 복사.
l3
Out[258]:
[1, 99, 99, 99]
In [263]:
#제어문
In [264]:
#IF문
In [272]:
pocket = ['paper','handphone']
card = True
if 'money' in pocket:
    print("택시를 타고가라")
else:
    if card:
        print("택시를 타고가라")
    else:
        print("걸어가라")
택시를 타고가라
In [279]:
n=3
if n%2 == 1:
    print('홀수')
else:
    print('짝수')
홀수
In [ ]:
출처 - 점프  파이썬

'beginner > 파이썬 기초' 카테고리의 다른 글

2019.02.07  (0) 2019.02.07
2019.1.31  (0) 2019.01.31
13. 기능을 확장하는 모듈  (0) 2019.01.11
12. 함수를 사용한다  (0) 2019.01.10
11. 조건 분기한다 / if구문  (0) 2019.01.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함