MINERVA/Python 2022. 5. 31. 11:11
반응형

튜플(tuple)을 간단히 말하면 변경할수 없는(immutable) 시퀀스 자료형(sequence type)입니다.

그런데, 앞에서 학습한 리스트(list)가 있는데 왜? 튜플(tuple)이 있을까?

그 이유는, 튜플은 리스트에 비해서, 가볍고(즉, 빠르다)고 메모리를 작게 사용합니다.(이 부분은 별도로 정리하겠습니다.)

 

튜플(tuple) 사용 용례를 정리하면 다음과 같습니다.

 

#########################################
#   [튜플(Tuple) 실습]
#   1) sequence types 실습: indexing, slicing, concatenating, iterating, size
#   2) 왜? Tuple을 사용할까? 리스트로 다하면 되는데?
#       -> 메모리를 절약하고, 성능이 더 좋다.
#####
# 1) 인덱싱(indexing)
print(aTuple)
print(aTuple[0])    #  0 인덱스: Tuple 객체의 맨 처음
print(aTuple[-1])   # -1 인덱스: Tuple 객체의 맨 마지막

# tuple안의 tuple: 기준값을 저장할때 많이 사용
dTuple = ( (1,2,3), ('a','b','c'))
print(dTuple)
print(dTuple[0])
print(dTuple[1])
print(dTuple[0][1])
print(dTuple[1][0])
[결과]
(1, 2, 3, 4, 5, 6, 7, 8, 9)
1
9
((1, 2, 3), ('a', 'b', 'c'))
(1, 2, 3)
('a', 'b', 'c')
2
a
# 2) 슬라이싱(slicing)
print(aTuple[1:])   # 인덱스 1부터 마지막까지
print(aTuple[:4])   # 인덱스 처음(0)부터 인덱스 4까지
print(aTuple[1:3])  # 인덱스 1부터 인덱스 5까지
print(aTuple[:])    # 인덱스 처음 마지막까지

print(aTuple[1:9:2])  # 인덱스 1부터, 9까지, 2간격으로 추출
[결과]
(2, 3, 4, 5, 6, 7, 8, 9)
(1, 2, 3, 4)
(2, 3)
(1, 2, 3, 4, 5, 6, 7, 8, 9)
(2, 4, 6, 8)
# 3) 연결(concatenating)
bTuple = ('a','b','c','d')
cTuple = aTuple + bTuple
print(cTuple)
[결과]
(1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd')
# 4) 반복(iterating)
print(bTuple*3)
[결과]
('a', 'b', 'c', 'd', 'a', 'b', 'c', 'd', 'a', 'b', 'c', 'd')
# 5) 크기(sizing)
print(len(bTuple))
[결과]
4
반응형
posted by choiwonwoo
:
MINERVA/Python 2022. 5. 27. 14:41
반응형

0. 정의
순서(번호)를 붙여 나열되어 있는 객체를 의미. 여기서 순서(번호)를 인덱스(index)라고함
각각의 요소(element) 또는 데이터(data)들이 연속적으로 이어진 자료형을 의미하며, 각, 데이터(data)에는 순서(번호)를 붙여 나열함

 

다시 정리하면, 
시퀀스 자료형으로 만든 객체를 시퀀스 객체라고 하며 시퀀스 객체 안에 들어있는 값들을 요소라고 부릅니다.

1. 시퀀스 자료형 종류
list, tuple, 문자열, range, bytes, bytearray

2. 시퀀스 자료형 특성
1) 인덱싱 (indexing)
- 인덱스를 통해 값에 접근가능(인덱스는 0부터 시작)

2) 슬라이싱 (slicing)
- 일부분의 값을 얻을 수 있음, 원본에는 영향미치지 않음

3) 연결(concatenating)
- '+' 연산자를 통해서 두 객체를 연결해서, 새로운 시퀀스 객체를 생성

4) 반복
- '*' 연산자를 통해서 객체를 원하는 만큼 반복 가능

5) 크기
- len(객체명)을 통해 객체안에 있는 값(element)의 갯수를 확인

 

3. 예제

인덱싱(indexing) 예제
인덱싱(indexing) 결과
슬라이싱(slicing) 예제
슬라이싱(slicing) 결과
연결(concatenating) 예제
연결(concatenating) 결과
반복(interating) 예제
반복(interating) 결과

반응형
posted by choiwonwoo
:
MINERVA/C_CPP 2022. 5. 24. 16:28
반응형

최근 트랜드는 데이타 처리 관련해서는 Python을 사용해서 작업하는 경우가 많지만, 최근 프로젝트에서 C++로 excel 파일을 사용해야 하는 경우가 있어, 몇가지 라이브러리를 테스트 진행후 개인적으로 강추하는 라이브리를 공유합니다.

 

https://www.libxl.com/download.html

 

LibXL download

LibXL for Windows 4.0.3   i386 x64 Download Date: 2022-02-01 Size: 29 679 292 bytes MD5: B42C5F0D63DF834066CA17D393468AFC LibXL for Linux 4.0.3   i386 x64 armhf Download Date: 2022-02-01 Size: 25 354 244 bytes MD5: F08C6EDB8B912A9431F271DEC3E6FD80 Li

www.libxl.com

해당 라이브러리에 익숙해지는 방법은 아래의 예제 파일을 보시면 금방입니다.

그리고, 각 API에 대한 메뉴얼은 index.html 파일을 오픈하여보시면 자세하게 나와있습니다.

index.html

개인적으로 근래 접한 오픈소스중에 가장 완성도가 높은것으로 보입니다. 각 platform , 32/64bits, 컴파일러 버젼별 지원이 어지간한 상업용 수준입니다.

 

감사합니다.

반응형
posted by choiwonwoo
: