프로그래밍 언어/Python

파이썬 Python 실습 :: 자료형 함수 및 관리, range(), len()

gamjadori 2024. 1. 4. 09:02
728x90

<리스트>

  • 여러개의 데이터를 하나의 변수에 지정
  • 형식: a = list() / a = []
a = list()
b = []
>> 두 가지 방법 모두 사용 중

>>> print(type(a), type(b))
<class 'list'> <class 'list'> // 두 표현 방법 모두 list 함수임을 알림

>>> a = [1, 2, 3, 4, 5]
>>> print(a, type(a))
[1, 2, 3, 4, 5] <class 'list'>

>>> person = ['si eun', 60, 165]
>>> print(person)
['si eun', 60, 165, True]

print('1' + '1')
11
print(1 + 1)
2
print([1, 2, 3] + [4, 5, 6])
[1, 2, 3, 4, 5, 6]

print(list(range(0, 10)) + list(range(9, 20)))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

<range 함수>

**** range(): 일정 범위의 연속된 정수를 생성하는데 사용
1부터 10까지 만들고 싶으면 range(1,11)로 지정해야 함**

>>> b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> b = list(range(1,11))
>>> print(b)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> c = list(range(1, 30, 3)) // 1부터 30까지 정수를 생성하는데, 3씩 건너뛰어 생성
>>> print(c)
[1, 4, 7, 10, 13, 16, 19, 22, 25, 28]

**c = list(range(0, 20, 2)) # 짝수 생성
c = list(range(1, 20, 2)) # 홀수 생성**

print(list(range(-10, 10, 4))) // -10부터 10까지 정수를 생성하는데, 4씩 건너뛰어 생성
[-10, -6, -2, 2, 6]
print(list(range(-10, -10, -2)))  // -10부터 110까지 정수를 생성하는데, -2씩 건너뛰어 생성
[]

print(range(1, 10) + range(9, 20)) >> 오류로 연산 불가능
Traceback (most recent call last):
  File "<pyshell#134>", line 1, in <module>
    print(range(1, 10) + range(9, 20))
TypeError: unsupported operand type(s) for +: 'range' and 'range'

<튜플> 리스트의 읽기 전용

  • 여러가지 형식의 데이터를 담는 자료형
  • ( ) 괄호로 묶고 쉼표로 구분된 데이터를 리스트 형식으로 지정한 것
  • 튜플 안의 값을 변경할 수 없음
>>> a = (1, 2, 3, 4, 5)
>>> print(a)
(1, 2, 3, 4, 5)

print(tuple(range(0, 10)) + tuple(range(9, 20)))
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)

a = list(range(0, 100, 10))
a = a * 5
print(a)
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>> 0, 10, 20, 30, 40, 50, 60, 70, 80, 90을 다섯번 반복

<요소의 개수 확인> len() 함수

  • 리스트에 들어있는 요수 개수, 리스트의 크기를 알려 줌
a = list(range(0, 100, 10))
print(a)
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90] >> 요소 10개
print(len(a))
10

>>> c = 'hello world'
>>> print(len(c))
11 >> 빈칸도 개수로 판단

<시퀀스 자료형 사용법>

>>> a = list(range(0, 30, 2)) // 0부터 30까지 정수를 생성하는데, 2씩 건너뛰어 생성
>>> print(a)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28]

>> 데이터가 많은 경우, 데이터가 있는지 확인하는 방법 **** in**
>>> print(222 in a) // a에 222가 있어?
False (없어)
>> 데이터가 많은 경우, 데이터가 없는지 확인하는 방법 ** not in
>>> print(222 not in a)  // a에 222가 없어?
True (없어)

** 숫자 뿐만아니라, 문자도 가능
>>> b = 'hello world'
>>> print('w' in b)
True

<인덱스 사용>

  • 인덱스: 시퀀스 객체의 각 요소의 순서 표현
  • 인덱스는 무조건 0부터 시작
>>> a = [10, 20, 30, 40, 50]
>> 10=0 20=1 30=2 ... 50=4 (인덱스)
>>> print(len(a), 40 in a) >> 리스트 a의 길이(요소)를 표시하고, 40이 a에 속해있는지 출력
5 True
>>> print(a[0]) >> 리스트 a의 0번째 요소를 출력
10
>>> print(a[4]) >> 리스트 a의 4번째 요소를 출력
50
>>> print(a[len(a)-1])
50
>> len(a)= 5
5-1=4
>>> print(a[4]) >> 리스트 a의 4번째 요소를 출력
**50**
>>> print(a[-1]) ** 마지막 인덱스 지정: a[-1]
50

# 인덱스를 이용한 리스트 요소의 값 수정 및 삭제 // 문자열도 수정 가능...한가?
>>> a[-1] = 60
>>> a[0] = 19
>>> print(a)
[19, 20, 30, 40, 60]
>> [10, 20, 30, 40, 50]에서 [19, 20, 30, 40, 60]로 변경

>>> a = [10, 20, 30, 40, 50]
>>> print(a)
>>> del a[-1]
>>> print(a)
[19, 20, 30, 40]

<슬라이싱>

  • 연속적인 객체들에서(예: 리스트, 튜플, 문자열) 범위를 지정해 객체들을 가져오는 방법
  • 형식: 리스트 이름[2:5(몇 번째부터 : 몇 번째까지]
>>> a = [1, 2, 3, 4, 5]
>>> print(a[2:4]) (2:4에서 4는 미만으로 처리하기 때문에 4번째가 5임에도 불구하고 -1인 4 출력)
[3, 4]
>>> print(a[2:5])
[3, 4, 5]

>>> a = list(range(0, 30))
>>> print(a[0:11:2]) // 0번째부터 11번째(10번째)까지 가져오는데, 2씩 건너뛰어(짝수) 출력
[0, 2, 4, 6, 8, 10]

>>> print(a[1:11:2]) // 1번째부터 11번째(10번째)까지 가져오는데, 2씩 건너뛰어(홀) 출력
[1, 3, 5, 7, 9]

<딕셔너리>

딕셔너리는 { }(중괄호) 안에 키(요소): 값 형식으로 저장

각 키와 값은 ,(콤마)로 구분

  • 딕셔너리 = {키1: 값1, 키2: 값2}
>>> c = {'나이': 25, '키': 165, '몸무게': 60, '성별': '여', '성적': [10, 20, 30, 40]}
>>> print(len(c)) // 딕셔너리 c의 요소 개수 출력
5
>>> print(c['나이'], c['키'], c['몸무게']) // 딕셔너리 c의 나이, 키, 몸무게 출력
25 165 60
>>> print(c['성적'][3]) // 딕셔너리 c의 성적 리스트 중 3번째 요소 출력
40
>>> c['나이'] = 26 // 변수 수정
>>> print(c)
{'나이': 26, '키': 165, '몸무게': 60, '성별': '여', '성적': [10, 20, 30, 40]}

<파이썬 응용>

  • 고객 정보를 저장할 변수를 설계
  • 고객 한 명에 대한 이름(문자열), 성별(문자열), 이메일주소(문자열), 출생년도(정수), 키(실수), 몸무게(실수)
  • 다섯 명에 대한 고객 정보를 하나의 변수에 저장할 수 있도록 설계
1번
이름: 홍길동, 성별: 남, 이메일 주소: a@a.com, 출생년도: 1999, 키: 180, 몸무게: 66.5
2번
이름: 김길동, 성별: 여, 이메일 주소: b@a.com, 출생년도: 1998, 키: 185, 몸무게: 70
3번
이름: 남길동, 성별: 여, 이메일 주소: c@a.com, 출생년도: 2002, 키: 160, 몸무게: 55
4번
이름: 길길동, 성별: 남, 이메일 주소: d@a.com, 출생년도: 2010, 키: 185, 몸무게: 66
5번
이름: 서길동, 성별: 여, 이메일 주소: e@a.com, 출생년도: 2011, 키: 175, 몸무게: 46
  • 리스트에 고객정보 생성
>>> 고객정보 = [
	[홍길동, 남, a@a.com, 1999, 180, 66.5],
	[김길동, 여, b@a.com, 1998, 185, 70],
	[남길동, 여, c@a.com, 2002, 160, 55],
	[길길동, 남, d@a.com, 2010, 185, 66],
	[서길동, 여, e@a.com, 2011, 175, 46]
]
>>> print(고객정보[1][0], 고객정보[1][5])
// 1번째 고객정보 중 0번째 정보 출력, 1번째 고객 정보 중 5번째 정보 출
김길동 70
  • 딕셔너리에 고객정보 생성
>>> 고객정보 = {
	'이름': [홍길동, 김길동, 남길동, 길길동, 서길동]
	'성별': ['남', '여', '여', '남', '여']
	'이메일주소': ['a@a.com', 'b@a.com', 'c@a.com', 'd@a.com', 'e@a.com']
	'출생년도': [1999, 1998, 2002, 2010, 2011]
	'키': [180, 185, 160, 185, 175]
	'몸무게': [66.5, 70, 55, 66, 46]
}
>>> print(고객정보['이름'][1], 고객정보['몸무게'][1])
// 고객정보 '이름' 중, 1번째 요소 출력, 고객정보 '몸무게' 중, 1번째 요소 출력
김길동 70
  • 리스트에 딕셔너리로 고객정보 생성
>>> 고객정보 = [
	{이름: 홍길동, 성별: 남, 이메일 주소: a@a.com, 출생년도: 1999, 키: 180, 몸무게: 66.5}, 
	{이름: 김길동, 성별: 여, 이메일 주소: b@a.com, 출생년도: 1998, 키: 185, 몸무게: 70}, 
	{이름: 남길동, 성별: 여, 이메일 주소: c@a.com, 출생년도: 2002, 키: 160, 몸무게: 55}, 
	{이름: 길길동, 성별: 남, 이메일 주소: d@a.com, 출생년도: 2010, 키: 185, 몸무게: 66}, 
	{이름: 서길동, 성별: 여, 이메일 주소: e@a.com, 출생년도: 2011, 키: 175, 몸무게: 46}, 
]
>>> print(고객정보[1]['이름'], 고객정보[1]['몸무게'])
// 1번째 고객정보 중, '이름' 출력, 1번째 고객정보 중 '몸무게' 출력
김길동 70
  • 딕셔너리에 딕셔너리로 고객정보 생성
>>> 고객정보 = [
	1: {이름: 홍길동, 성별: 남, 이메일 주소: a@a.com, 출생년도: 1999, 키: 180, 몸무게: 66.5}, 
	2: {이름: 김길동, 성별: 여, 이메일 주소: b@a.com, 출생년도: 1998, 키: 185, 몸무게: 70}, 
	3: {이름: 남길동, 성별: 여, 이메일 주소: c@a.com, 출생년도: 2002, 키: 160, 몸무게: 55}, 
	4: {이름: 길길동, 성별: 남, 이메일 주소: d@a.com, 출생년도: 2010, 키: 185, 몸무게: 66}, 
	5: {이름: 서길동, 성별: 여, 이메일 주소: e@a.com, 출생년도: 2011, 키: 175, 몸무게: 46}, 
]