python
python - 집합형 자료 ( String , List)
cg0826
2020. 5. 7. 10:22
반응형
# String, List 에 대하여
# String : 문자열 취급 ( 순서형 )
1
2
3
4
5
6
7
8
9
10
11
12
13
|
s = 'sequence'
# s문자열의 길이는?
print(len(s))
# e의 개수는?
print(s.count('e'))
# 처음 e는 어디에? 3번째 이후 e는 어디에? 뒤에서부터 e는 어디에?
print(s.find('e'), ' ' , s.find('e', 3), s.rfind('e'))
# s 문자열에 s로 시작하면 TRUE 아니면 False
print(s.startswith('s'))
|
변수.count('값') : 변수에서 원하는 데이터의 개수를 출력
변수.find('값') : 해당 변수에서 원하는 값이 저장된 첫 위치 출력
변수.find('값','위치') : '위치' 이후에 원하는 값이 저장된 장소 출력
변수.rfind('값') : 변수의 뒤에서부터 처음 출력되는 장소 출력
변수.startswith('값') : '값'으로 시작하면 TRUE 아니면 FALSE
출력 결과
Ex 2) 파이썬도 자바처럼 가비지 컬렉터가 존재하므로, 변수에 '기존 값'에서 '새로운 값'을 넣으면 덮어쓰기가 됩니다.
1
2
3
4
5
|
ss = 'abc'
print('abc', id(ss))
ss = 'def'
print('def', id(ss))
|
id(변수명) : '변수명'의 메모리 주소를 출력합니다.
출력 결과

Ex 3) # 슬라이싱 기법을 이용하면 데이터 값을 부분적으로 잘라서 볼 수 있다.
1
2
3
|
s = 'sequence'
print(s[0], ' ' , s[2:4], ' ' , s[:3], ' ', s[3:])
print(s[-1], ' ' , s[-4:-1], ' ' , s[-4:], ' ' , s[::2])
|
변수['위치'] : '위치'번째 값 출력
변수['위치1':'위치2'] : '위치1'에서 '위치2'번째 출력
변수[ : '위치1'] : '위치1' 전까지 출력
변수[ '위치1' : ] : '위치1' 부터 전부 출력
변수[ ::'숫자' ] : 2개씩 끊어서 출력한다.
- 가 붙는 경우는 반대로 생각해주면 된다 !
출력 결과
Ex4 ) # 문자열 데이터는 수정이 불가능합니다.
1
|
s[0] = 'k'
|

Ex 5)
- split 함수는 공백 또는 특정 기준으로 나눌때 사용합니다.
- 문자열 타입의 list가 있으면 각 요소들을 하나의 문자열로 만들때 사용합니다.
1
2
3
4
|
출력 결과
# List 배열과 유사, 순서가 존재, 변경 가능, 여러 종류의 자료를 허용
Ex 1) 여러 종류의 자료를 허용합니다.
1
2
3
4
5
|
a = [1,2,3]
b =[10, a, 12.3, True, 'abc' ]
print(a, ' ', id(a))
print(b, ' ' , id(b))
|
출력 결과
Ex 2) 검색 , 업데이트 , 삭제하는 방법
1
2
3
4
5
6
7
8
9
10
|
a = [1,2,3]
b =[10, a, 12.3, True, 'abc' ]
print(b[0], ' ' , b[1], ' ' , b[1][:2])
b[0] = 'def'
print(b[0])
b.remove('abc')
print(b)
del b[3]
print(b)
|
변수['숫자'] : 해당 위치의 자료 출력
변수명.remove : 변수 안에 있는 데이터를 삭제
del 변수명 : 위와 동일하나 차이점이 있다면 del은 위치에 의한 삭제를 진행한다.
출력 결과

Ex 3) family 변수 사용
1
2
3
4
5
6
7
|
family = ['엄마', '아빠', '나']
family += ['아주머니', '아저씨']
print(family, len(family), family[0]) # famly 변수 데이터 출력 / 길이 출력 / 0번째 출력
|
출력 결과

Ex 4)
- 주소를 참조하기 때문에 값들을 서로 공유
- copy 함수를 import 후 deepcopy 사용하여 객체를 새로 생성 후 새로운 주소를 기억시키면 다른 값 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
num = ['일','이','삼']
num2 = num
print(num)
print(num2)
num[0] = '사'
num2[1] = '오'
print(num, ' ', num2)
import copy
num3 = copy.deepcopy(num) # 새로운 객체 생성 후 새로운 주소를 기억
print(num, ' ',num3)
num[0] = '십'
print(num, ' ' , num3)
|
출력 결과

Ex 5) stack과 queue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
a = [1,2,3]
a.append(4) # 맨뒤에 4를 추가
print(a)
a.pop() # 맨 마지막에 삽입된 값은 뺌 stack과 유사
print(a)
a.pop()
print(a)
b = [1,2,3]
b.append(4) # 맨뒤에 4를 추가
print(b)
b.pop(0) # 맨 마지막에 삽입된 값은 뺌 stack과 유사
print(b) # FIFO 동작과 동일함
b.pop(0)
print(b)
|
출력 결과

반응형