Search

반응형

'파이썬프로그래밍'에 해당되는 글 12건

  1. 2020.10.10 [HOW]Python Tuple(튜플) 사용하는 방법, 파이썬 프로그래밍 자료구조, 왕초보
  2. 2020.10.09 [HOW]Python range() 파이썬 프로그래밍 range()함수 사용하는 방법, 왕초보 버전
반응형

안녕하세요. 신기한 연구소입니다.

파이썬 프로그래밍에서 자료구조가 있습니다.

이전에 리스트(List)를 알아봤는데요.

이번 포스팅은 파이썬 튜플(Python Tuple)에 대해 알아볼게요.

 

 

파이썬 프로그래밍에서 사용하는 자료구조에 시퀀스 자료형이 있습니다.

리스트(list), 튜플(tuple), 레인지(range)가 있습니다.

인덱싱, 슬라이싱 연산이라는 공통된 성질도 있습니다.

그중 파이썬 튜플(Python Tuple)을 공부해 보겠습니다.

리스트와 다른 점은 어떤 것이 있는지도 살펴봅니다.

 

예제

 

결과

파이썬 튜플(Python Tuple)의 구조는 괄호 ( ) 안에 콤마로 데이터를 구분해서 만듭니다.

위 예제를 보면 a = 1로 할당 시 조회하면 당연히 1이 출력됩니다.

 

두 번째는 a = 1, 2, 3으로 콤마로 a에 할당했습니다.

결과를 보니 튜플(Tuple)로 만들어졌네요. (1, 2, 3) 이것이 바로 튜플입니다.

물론 처음부터 a = (1, 2, 3)으로 만들 수 있습니다.

 

a를 튜플(Tuple)로 만든 방식대로 b와 c도 만들었습니다.

b를 보면 데이터 형이 달라도 만들어지고

c를 보면 튜플(Tuple) 내 튜플과 리스트를 추가할 수 있네요.

오류 없이 잘 실행되었습니다.

 

파이썬 튜플(Python Tuple)이 인덱싱과 슬라이싱이 가능하다고 했습니다.

print(c[2])로 인덱스를 사용해서 데이터를 요청하니 해당 위치의 리스트가

조회되었습니다. 정말 간단하게 데이터 구조를 만들 수 있네요.

 

그럼 튜플(Tuple) 내의 리스트의 데이터 하나를 선택해서 출력했습니다.

먼저 리스트는 c 튜플의 인덱스로 2에 위치하고 있습니다.

c[2]로 하면 그 위치의 리스트가 출력됩니다.

 

그 리스트의 첫 번째 문자를 선택하고 싶다면 인덱스를 활용하면 됩니다.

c[2]의 [0]번째이니 c[2][0]으로 하면 된답니다.

결과는 잘 나왔습니다. 쉽죠?

 

위 예제를 보면 우리가 좀 전에 테스트했던 c[2][0]의 값을 변경하는 코딩입니다.

실행해 보니 'a'가 'k'로 잘 변경되었네요.

튜플(Tuple) 내 리스트를 수정했습니다.

 

그래서 튜플(Tuple) 내 리스트 값을 통째로 변경해봤습니다.

그런데 오류가 났습니다.

타입 에러로 튜플(Tuple) 객체는 값을 변경(할당) 할 수 없답니다.

이 전 코딩에서 튜플 내 리스트는  수정이 되었는데 어찌 된 일일까요?

 

튜플 내 리스트 내의 값을 변경하는 경우는 리스트의 값을 변경하는 것이기에 가능하고

튜플 내 리스트 전체를 변경하는 것은 튜플의 값을 변경하는 것이기에 오류가 난 겁니다.

튜플(Tuple)은 한 번 값이 정해지면 수정이 불가능하네요.

 

위 예제는 튜플(Tuple)을 만드는 방법 중

값이 없는 빈 튜플이나 1개인 경우에 대한 코딩입니다.

 

'값'으로 하거나 ('값')으로 해도 튜플이 만들어지지 않습니다.

방법은 ('값', )로 1개의 값 뒤에 콤마 하나만 넣어주면 된답니다.

 

이제 튜플(Tuple)에 값이 하나인 d를 값이 세 개인 e와 결합해서

새로운 튜플 f를 만들어봤습니다.

별거 없네요. ㅎㅎ

 

튜플 자체에 추가로 값을 넣을 수 없기 때문에

+ 연산자를 사용해서 새로운 튜플을 만들면 되겠네요.

그냥 d를 사용하고 싶다면 d = d + e로 하면 d에 e의 값들을 더해서 

기존 d는 사라지고 새로운 튜플로 만들어집니다.

 

이번은 빈 값 튜플을 시도해 봅니다.

당연히 e=''는 안 되겠지요? ㅎㅎ

그래서 e = ('')도 시도해 봤지만 결국 결과는 e=''와 같습니다.

 

값이 하나인 튜플을 만들 때처럼 따라 했는데.

결과는 비참하게 에러가 나네요.

 

다시 따라 해 봤습니다.

결과는 ('',)가 나왔네요. 빈 값 튜플이 맞을까요?

len을 통해서 개수를 확인해 보니 1이 나옵니다. 그럼 빈 값이 아니네요.

 

튜플의 빈 값은 e = ()로 하면 된답니다. 정말 쉽네요. ㅎㅎ

결과를 확인하고 len을 통해 개수를 확인하니 ()와 0 이 나옵니다.

성공했습니다.

 

튜플(Tuple) a, b, c를 이용해서 각 튜플을 새로운 e 튜플에 값으로 만드는 예제입니다.

이런 경우 값 a, b, c는 튜플 c에 패킹된 거라 합니다.

튜플 패킹(Tuple packing)이라 부릅니다.

파이썬 튜플(Python Tuple) 이 이래서 쉽다고 하는 듯합니다.

 

j, k, m에 위의 튜플 e를 할당했습니다.

그리고 결과를 보니 멋지네요.

j, k, m에 e의 각 값들이 튜플로 새로 만들어졌습니다.

 

튜플 언패킹(Tuple unpacking)이라고 하는데 튜플을 값 별로 분리해서 

지정된 변수에 튜플을 생성하게 할당하는 겁니다.

정말 쉽게 지정할 수 있네요.

 

주의할 점은 튜플 e의 값이 3개이기 때문이 언패킹에도 반드시 3개가 있어야 합니다.

지금까지 파이썬 튜플(Python Tuple)의 다양한 기능에 대해 알아봤습니다.

잘못된 정보나 수정이 필요하면 댓글 주세요.

아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.

반응형
반응형

안녕하세요. 신기한 연구소입니다.

파이썬 프로그래밍 (Python Programing)의 기초에 대해 계속 공부하고 있는데요.

어느 정도 하다 보니 몇 번만 적응하면 크게 문제없이 사용할 수 있겠어요.

 

이번 파이썬 프로그래밍 (Python Programing)은 range() 함수에 대해 알아보겠습니다.

단순히 이름만 보면 범위라는 의미인데..

range() 함수는 어떤 범위를 지정할 때 사용하는 함수라 유추가 되네요.

파이썬의 라이브러리를 찾아보니..

range 타입은 숫자값의 변하지 않는 연속됨을 나타내고 일반적으로 for문에서 루프를 지정해서 

특정 숫자만큼 반복해서 사용합니다.

저번 포스팅에서 for문을 공부했는데..

그럼 그 공부했던 기억을 되살려서 range 타입을 사용해 봐야겠네요.

우선 for문을 다시 연습해봤습니다.

nameList의 List를 in 뒤에 넣고 루프를 돌리니 잘 나오네요.

파이썬 프로그래밍 (Python Programing)이 은근 재미가 있네요.

이제 range() 함수를 사용해 보겠습니다.

rgTest에 range(10)으로 할당했습니다.

len(rgTest)를 사용해서 길이를 출력하니 우리가 설정한 10이 나옵니다.

그런데 print(rgTest)를 하니 range(0, 10)이라고 나오네요.

좀 전에 for문에서 일반적으로 사용한다고 하니

for문을 통해 range(10) 내부에 어떤 값이 있는지 알아봅니다.

for문의 in 부분에 rgTest를 사용했습니다.

그리고 print로 출력하니 결과가 0부터 9까지 나왔습니다.

그럼 range() 함수에서 range(0, 10)의 의미는 0 <= range 값 < 10으로 보면 되겠네요.

처음에 사용했던 nameList입니다.

for문을 사용했고 nameList의 길이를 range() 함수 길이로 지정했습니다.

nameList 길이는 4이기에 range(4)와 같은 의미가 되겠네요.

그런데 print(row)를 하니 range의 값은 0, 1, 2, 3이 나오네요.

nameList의 목록 값이 보고 싶다면 다음과 같이 하면 되겠네요.

nameList[row]를 사용하니 해당 row값이 변경될 때마다 인덱스 값으로 활용해서

print에서 출력이 되네요.

range() 함수를 사용해서 편하게 시퀀스를 만들다니..

파이썬 프로그래밍 (Python Programing)의 강점이 아닐까 싶네요.

그럼 range() 함수를 좀 더 활용해볼게요.

rgList1의 경우를 보면 for문의 in 영역에 list를 range() 함수로 만들었네요.

그러면 list는 range(5)로 할당을 했기 때문에 인덱스 값으로 [0, 1, 2, 3, 4]로 

만들어졌을 겁니다.

결과를 보니 맞네요.

 

rgList2는 range() 함수로 범위를 지정했습니다. list를 만드는 조건이 range(10, 14)이므로

10<= range 값 < 14로 생각하면 됩니다.

결과를 보니 [10, 11, 12, 13] 딱 맞게 나왔습니다.

 

rgList3는 range() 함수의 인수가 하나 더 늘어있네요.

결과 먼저 보겠습니다.

범위는 0<= range 값 <10 인데 0, 2, 4, 6, 8 로 짝수가 들어가 있네요.

range() 함수의 마지막 인수는 앞의 범위 목록을 3번째 인수값만큼 건너뛰라는 의미입니다.

 

rgList4는 0보다 작은 인덱스 값을 설정했습니다.

-10<= range 값 < -1이므로 -10부터 -2까지의 값이 생성되었네요.

 

rgList5의 경우도 3번째 인수가 있네요.

하지만 좀 다른 부분은 0보다 작은 경우는 건너뛰기가 0을 기준으로 하기 때문에

range(-1, -10, -3)으로 설정했습니다. -1에서 출발해서 -3씩 건너뛰어 -9까지 이동하는 겁니다.

[-1, -4, -7]이 결과로 나왔습니다.

파이썬 프로그래밍 (Python Programing) 이 이런 재미있는 기능이 있었네요.

실전 개발에서도 range() 함수는 정말 유용하게 사용할 수 있겠어요.

오늘도 파이썬 프로그래밍 (Python Programing)의 기능을 하나 더 알게 되었습니다.

다들 열심히 공부하시고

잘못된 정보나 수정이 필요하면 댓글 주세요.

아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.

 

 

반응형