새소식

Python

헷갈리는 파이썬 문법 다지기 3. 군집자료형과 for 반복문

  • -

파이썬 문법의 모든 내용을 담은 게시글이 아닌 헷갈리거나 자주 까먹는 부분의 문법들만 다룬 내용입니다.


리스트와 연산 

- 대괄호 [] 사용 

- 순서가 있고, 인덱스를 이용하여 데이터에 접근이 가능 

- 인덱스는 0번부터 시작, 음수로는 마지막 인덱스가 -1 

- 리스트는 수정 가능하다. (mmutable) 

- 리스트 슬라이싱 (slicing) 

A= [15,27,32,20,17,13,10,22] 

A[:] #리스트 전체 다 
A{;;} #리스트 전체 다 
A[:5] #앞에서부터 4번째까지 
A[0:5] #0번째부터 4번째까지
A[2:-1] #2번째 부터 -2번째까지 
A[-3:-1] #-3번째부터 -2번째까지

A[2:6:1] #2번째부터 5번째까지 1칸식 띄어서 
A[::2] #전체 다 2칸씩 띄어서

 

- 리스트 연결(+), 반복(*)

L= [1,3,5,7,9] 
M =[2,4,6,8] 

L+M
>> [1,3,5,7,9,2,4,6,8]  #리스트를 합침 

print(L,M) 
>> [1,3,5,7,9] [2,4,6,8] #리스트 따로 따로 출력

K= L+ M
print(k) 
{1,3,5,7,9,2,4,6,8] #리스트를 합친 K를 출력

L*3
>>[1,3,5,7,9,1,3,5,7,9,1,3,5,7,9]   #리스트 3회 반복

 

-리스트 메소드 : 데이터 객체에 대해서 어떤 일을 처리할 수 있도록 하는 코드 

 

- 리스트 복사하기 ('=' 이용하기) 

L= [1,3,5,7,9]
id(L) 
>> 53794056 #L 리스트의 주소 값 

M = L #이때 M은 L리스트의 값을 가지고 새로운 주소에 저장하는 것이 아니라 L을 같이 공유하는 것, L을 가르킨다. 
M[2]= 100 #따라서 M 2번째 자리에 100을 바꾸라는 것은 L의 2번째자리가 바뀌는 것이다. 
print(L) 
>> [1,3,100,7,9] #L의 2번째자리가 100으로 바뀜 
id(M) 
>> 53794056  #L의 주소 값과 동일

 

- 리스트 복사하기 (copy())

L= [1,3,5,7,9]
N= L.copy() #여기서 N은 '='을 이용할 떄와 다르게 새로운 주소값에 리스트 L의 값들이 저장됨 
N[2]= 100
print(L) 
>> [1,3,5,7,9] #L의 값은 변하지 않음 

print(N) 
>> [1,3,100,7,9] #N의 값만 바뀜

 

- 리스트 정렬하기 (sort()) 

- sort는 기본적으로 오름차순으로 정렬 

- 내림차순으로 정렬하기 위해서는 L.sort(reverse=True) 식으로 사용 (L은 리스트를 지칭하는 변수) 

 

튜플과 연산 

- 리스트처럼 여러 데이터를 저장할 수 있는 자료형러

- () 사용 

- 리스트와의 차이점: immutable, 수정 불가능 

 

사용방법은 리스트와 동일 

 

- 튜플 메소드 (리스트 안에 내용을 바꾸는 메소드들은 튜플에서 사용 불가, 수정 불가능하기 때문) 

#원소가 하나인 튜플일 때 
T= (1, ) #콤마가 필요 
S= (1) #콤마를 하지 않으면 int형으로 받아들임

A= 1,2,3  #괄호를 안해도 튜플로 인식

#튜플은 여러 변수에 값을 동시에 할당 가능하다.
a,b,c= 1,2,3 
>> a=1 
>> b=2
>> c=3

#튜플을 이용한 swap 
x= 10; y=20 
x,y= y,x 
print(x,y) 
>> 20 10

- 값을 변경하지 않을 경우 리스트보단 튜플을 사용하는게 좋다. 

 


집합(set) - {} 

- 중복된 데이터를 가질 수 없고, 데이터에 순서가 없다. 집합을 출력할 때 순서가 뒤죽박죽 나올 수 있음

- mmutable한 자료형이다. 

- [], +, * 기호들을 사용할 수 없다. 

- in, not in , len() 은 사용할 수 있다. 

s = {1,2,5} #집합 생성 

S = set() #빈 집합을 생성할 때는 set()으로 사용한다. {}을 사용할 경우 집합이 아니라 빈 사전으로 인식

 

 

- 집합 메소드 

 

 

사전 (dict) 

- 집합의 일종 (순서 개념이 없다) 

- +, *는 사용할 수 없지만 []는 사용 가능 

- in, not in, len()은 사용할 수 있다. 

- 사전에는 (키:값) 쌍으로 하나의 데이터가 저장된다.

 

#사전은 순서가 없음 

colorpen= {'red':2, 'blue':3, 'yellow':1} 
colorpen['green'] = 3 #추가하기 
print(colorpen) 
>> {'green':3 ,'red':2, 'blue':3, 'yellow':1} 

colorpen['red']= 4 #값 수정하기 
print(colorpen) 
>> {'green':3, 'red':4, 'yellow':1 , 'blue':3}

del colorpen['red'] 
colorpen 
>> {'green':3, 'yellow':1 , 'blue':3}

 

 - 사전 메소드 

#items 

count = {'toefl':40, 'toeic':50 , 'sat':25}
A= count.items() 
print(A) 
>> dict_items([('sat',25), ('toefl',40),('toeic',50)]) 
#파이썬에서 items()를 사용하여 키와 값을 반환해줄 때 dict_items()로 반환해준다. 

#따라서 items의 결과를 가지고 무엇인가 적용하겠다하면 
B= list(count.items()) #이 형태로 사용한다. 
print(B) 
>> [('sat',25), ('toefl',40),('toeic',50)]

#keys와 values도 dict_keys()~, dict_values()~로 반환해주므로 list를 사용하여 적용

for 반복문 

- range() 함수 

range(b) : 0부터 b-1까지의 수를 반환 

range(a,b) : a부터 b-1까지의 수를 반환 

range(a,b,n) : a부터 b-1까지의 n간격의 수를 반환 

A = range(5) 
B= list(range(5)) 
print(B) 
>> [0,1,2,3,4]

list(range(10,1,-2))
>>[10,8,6,4,2]

 

- for 구문을 이용한 반복문

for 구문에도 break와 continue 사용 가능  

for x in [1,2,3,4,5]:
	for y in [2,4,6,8,10]:
    	print(x*y, end =' ')  #end=' '는 값 사이에 공백을 생성한다는 의미
    print() 
    
    
    
>> 2,4,6,8,10
   4,8,12,16,20
   6,12,18,24,30
   ...

 

- 리스트 안에 반복문 사용하기 

A= [x**2 for x in range(10)] #변수 x를 0부터 9까지 돌아가면서 x제곱해라 
print(A) 
[0,1,4,9,16,25,...} 

B= [2**i for i in range(11)] #0부터 10까지 돌아가면서 2의 i승해라
print(B) 
[1,2,4,8,16,32,64,.]

 

 

- 군집 자료형의 형 변환 

A= [1,2,3,4] 
B= (1,3,5) 
C= {2,4,6,8,10}
D= {1:90, 2:88, 3:93}

E= tuple(A) #(1,2,3,4)
F= set(B) #{1,3,5}
G= List(C) #[8,10,2,4,6]
H= List(D) #[1,2,3] 사전을 다른 형으로 변환할 때에는 키값만 출력되어 변환된다.
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.