파이썬 자료구조/알고리즘 05 : 기본 자료구조, 배열2

728x90

C와 C++, Java등의 언어에서는 =를 결합 연산자로 사용한다.

a = b = 1

b에 1을 대입하여 얻은 결과를 a에 대입하므로 a = b = 1이 될 수 있다.

 

그러나 파이썬에서는 =가 연산자가 아니다. 같은 코드를 파이썬에서 입력하면 오류가 발생한다.

 

 

 

 

파이썬에서는 리스트와 튜플 모두 배열을 의미한다. 리스트와 튜플을 자료구조 관점에서 배열로 이야기 할 수 있다.

 

빈 배열 판단하기

if x:
	# x가 비어 있지 않으면(True) 실행
else:
	# x가 비어 있으면(False) 실행

 

비교 연산자로 배열의 대소, 등가 관계 판단

print([1, 2, 3] == [1, 2, 3])
print([1, 2] < [1, 3])
print([1, 2, 3] <= [1, 2, 3])
print([1, 2] < [1, 2 ,3] < [1, 2, 3 ,4])
print([1, 2] < [1, 1])
True
True
True
True
False

원소수가 많은 경우, 원소수가 같아도 어느 원소의 값이 더 큰 경우 해당 배열이 큰 것으로 판단한다.

 

 

등가성 vs 동일성

파이썬의 등가성 비교는 ==

좌, 우변의 값이 같은지를 비교

 

동일성 비교는 is

좌, 우변의 값과 식별 번호가 모두 같은지 비교

 

 

리스트와 튜플의 공통점과 차이점

성질, 기능 리스트 튜플
값 변경 가능? O X
딕셔너리의 key로 사용 가능? X O
이터러블 한가? O O
in, not in 연산자 사용 가능? O O
덧셈 연산자 + 로 연결할 수 있는가? O O
곱셈 연산자 *로 반복할 수 있는가? O X
+=으로 연결 대입, 반복 대입 가능? O X
인덱스 식 사용 가능? O X
슬라이스식 사용 가능? X
len(), min(), max(), sum(), index(), count() 사용 가능? O O
del(), append(), clear(), copy(), extend(), insert(), pop(), remove(), reverse() 사용 가능? O X
내포 표기로 생성 가능? O X

 

내포 표기 생성법

리스트 안에서 for, if 문을 사용해 새로운 리스트를 생성하는 기법

nums = [1, 2, 3, 4]
doubles = [num * 2 for num in nums if num % 2 == 1]    # nums의 홀수 값을 2씩 곱한 리스트 생성
print(doubles)
[2, 6]

 

728x90