Python

[Python] 슬라이싱, 문자열처리함수, 문자열포맷, 탈출문자, 리스트, 사전, 튜플, 집합, 자료 구조의 변경, shuffle, sample

희난 2022. 5. 7. 15:33

1. 슬라이싱

주어진 내용 중 필요한 것만 잘라서 사용하는 것

* 순서는 1부터가 아니라 0부터 센다. ex) 12345 -> 1은 0번째, 2는 1번째 ...

1) print(jumin[7]) -> jumin 함수에서 7번째에 있는 값

2) print(jumin[0:2]) -> jumin 함수에서 0번째부터 2번째 직전까지 있는 값 = 0번째, 1번째 값

3) print(jumin[:2]) -> jumin 함수에서 처음부터 2번째 직전까지 있는 값 = 0번째, 1번째 값

4) print(jumin[2:]) -> jumin 함수에서 2번째부터 끝까지 있는 값 = 2번째부터~13번째까지 값

*역으로 순서 셀 때는 -1, -2 ...

ex) 1234567 -> -7,-6,-5,-4,-3,-2,-1 (순서)

=> print(jumin[-7:0]) -> -7번부터 끝까지 있는 값 (1234567로 출력)

 

2. 문자열 처리 함수

1) print(python.lower()) -> python 함수의 문자를 모두 소문자 처리

2) print(python.upper()) -> python 함수의 문자를 모두 대문자 처리

3) print(python[0].isupper()) -> python 함수의 0번째 문자가 대문자인지에 대해 T/F 로 응답

4) print(len(python)) -> 띄어쓰기 포함한 python 전체 문자의 길이

5) print(python.replace("Python", "Java")) -> python 함수의 Python 이라는 단어를 Java로 대체

6) print(python.count("n")) -> python 함수에서 n이 총 몇 번 등장하는지

*index와 find (위치)

1) index=python.index("n") -> python 함수에서의 첫번째 n의 위치

2) index=python.index("n", index+1) -> 두번째 n의 위치(첫번째로 찾은 n위치 이후에 나오는 n의 위치)

3) print(python.find("n") -> 1번과 동일하게 n의 위치 알려줌

+) 둘의 차이점 - 없는 문자의 위치 요청할 때

1) print(python.index("k"))

-> 문장에 k가 없으므로 에러가 뜨며 프로그램이 종료되어 이 문장 이후 작성된 코드들 출력 X

2) print(python.find("k"))

-> 문장에 k가 없으므로 -1을 출력하고 프로그램 종료 없이 이 문장 이후 작성된 코드들 정상 출력

3. 문자열 포맷

1) %d : 정수

2) %s : 문자열 (string) -> 문자, 정수 모두 가능

3) %c : 하나의 문자 (character)

*두 개 이상 출력하기

1) print("나는 %s 색과 %s 색을 좋아해요." %("빨간", "파란"))

2) print("나는 { }색과 { }색을 좋아해요.".format("빨간", "파란"))

3) print("나는{1}색과 {0}색을 좋아해요.".format("빨간", "파란")) -> 파란, 빨간 순으로 출력

4) print("나는 {age}살이며, [color}색을 좋아해요.".format(age=20, color="빨간")) -> 변수처럼도 사용 가능

5) (v 3.6 이상부터 가능)

age=20

color=빨간

print(f"나는{age}살이며, {color}색을 좋아해요.") -> + 사용 없이 변수처럼 사용 가능.

 

4. 탈출 문자

1) n : 줄바꿈

2) \", \' : 문장 내 따옴표

+) print("~'A'~") 또는 print('~"A"~') 식으로 "와 '를 함께 써서 따옴표 표현도 가능

3) \\ : 문장 내 \ -> 그냥 \ 하나 입력시 이를 탈출문자를 입력하려는 시도로 인식해서 에러남

4) \r: 커서를 맨 앞으로 이동 -> \r 뒤에 나오는 문자 길이만큼 앞에서 자리 차지 (띄어쓰기 포함)

5) \b: 백스페이스, 한글자 삭제

6) \t: 탭

 

5. 리스트

순서를 가지는 객체의 집합 []

1) 리스트에서 객체의 위치 파악하기

print(subway.index("조세호"))

2) 리스트에 객체 추가하기 - 리스트 맨 뒤에 추가

subway.append("김종국")

3) 리스트에 객체 추가하기 - 리스트 중간에 삽입

subway.insert(1,"정형돈") -> 1이라는 위치에 정형돈 추가

4) 리스트에서 삭제하기 - 리스트 맨 뒤에서부터 삭제

subway.pop()

+) print(subway.pop()) -> subway 리스트에서 삭제되는 개체가 무엇인지 보여줌

5) 같은 이름의 객체가 몇 개 있는지 숫자 세기

print(subway.count("유재석"))

리스트는 자료형에 구애 받지 않고 섞어서(문자, 숫자, boolean) 사용 가능

6) 순서대로 정렬하기

num_list.sort()

7) 거꾸로 정렬하기

num_list.reverse()

8) 리스트 확장하기(리스트끼리 합치기)

num_list.extend(mix_list)

9) 리스트 객체 모두 삭제하기

num_list.clear()

 

6. 사전

key:value

사전의 key는 단 하나만 존재하고(중복x), key가 갖는 value도 단 하나뿐이다.

1) 어떤 key 가 사전 내에 있는지 확인하기

print(3 in cabinet) -> cabinet이라는 사전에 3이라는 key가 있으면 T, 없으면 F 출력

2) 사전에 새로운 key 추가하기/기존 key의 값 업데이트하기

cabinet[50]="조세호" -> 50(key):조세호(value) 값을 cabinet이라는 사전에 넣기/기존에 50이라는 key에 다른 value가 있었다면 조세호로 업데이트됨

3) 사전에 key:value 값 지우기

del cabinet["50"]

4) 사전에 있는 key 확인하기

print(cabinet.keys()) -> dict_keys(['key1`, 'key2'...])

5) 사전에 있는 value 확인하기

print(cabinet.values()) -> dict_values(['value1', 'value2' ...])

6) key, value 쌍으로 모두 출력하기

print(cabinet.items()) -> dict_items([('key1', 'value1'), ('key2', 'value2') ...])

7) 어떤 key가 갖고 있는 value 값 확인하는 방법 x2

 print(cabinet[3])

 print(cabinet.get(3))

8) 모든 value 삭제하기

cabinet.clear()

+) 7 방법 두 개의 차이점 - value가 없는 key의 값 요청할 때

1) print(cabinet[7])

-> key 7은 value가 없으므로 에러 발생하고 프로그램 종료되어 그 다음 코드 출력 X

2) print(cabinet.get(7))

-> key 7은 value가 없으므로 None 출력되고 프로그램 종료 없이 그 다음 코드 정상 출력

+) None 대신 다른 기본값이 출력되도록 설정하고 싶다면

: print(cabinet.get(7, "사용가능")) -> 일단 7의 value를 가져오려고 시도해보고 없으면 사용가능 출력

 

7. 튜플

()

리스트와 달리 내용 변경 불가능 -> 고정된 값에 대해서 사용 -> 할 수 있는 것이 많지 않으나 속도가 빠름

=> 변경되지 않는 목록 활용할 때 튜플 사용

1) print(menu[0]) -> menu라는 튜플에서 0번째 객체 출력

* 활용

(name, age, hobby)=("김종국", 20, "코딩") -> ()가 있으니 튜플 형태. 변수로 써도 되지만 이렇게 한꺼번에 쓸 수도 있음.

 

8. 집합

set, {}

중복을 허용하지 않고 순서가 없음. -> 중복된 값이 있다면 알아서 제외하고 출력함

1) 교집합 구하기

print(java&python)

print(java.intersection(python))

2) 합집합 구하기

print(java | python)

print(java.union(python))

3) 차집합 구하기

print(java-python)

print(java.difference(python))

4) 값 추가하기

python.add("김태호")

5) 값 제외하기

python.remove("유재석")

 

9. 자료 구조의 변경

*자료 구조의 종류 확인하기

: print(menu, type(menu)) -> 메뉴를 출력하고(괄호 형태로 종류 확인가능), <class '종류'> 출력

1) 집합을 리스트화

menu=list(menu)

2) 리스트를 튜플화

menu=tuple(menu)

3) 튜플을 집합화

menu=set(menu)

 

10. shuffle, sample

shuffle: 랜덤으로 순서 섞기

sample: 랜덤으로 뽑기

from random import *

-> shuffle, sample 함수 쓰려면 꼭 먼저 써야 하는 random module

1) shuffle(lst)

2) print(sample(lst, 1) -> lst에서 1개의 sample 뽑기