<jupyter_start><jupyter_text>- 1 인덱스 - 다른 언어와는 달리, python 의 겨우 음수 인덱스를 지원 - -1이 가장 마지막 인덱스를, -2가 마지막에서 두번째 인덱스를 의미<jupyter_code>print(a[0])
print(a[10])

print(a[-1])
print(a[-2])<jupyter_output>H
d
d
l<jupyter_text>인덱스의 범위 - 인덱스는 [0. 문자열의 길이] 의 범위만 유효 - 음수 인덱스를 사용할 경우, [-문자열의 길이, -1] - 범위를 넘어갈 경우 에러 발생  문자열 slicing - 인덱스가 하나의 문자만을 추출한다면,  - slicing 은 부분 문자열을 추출한다고 볼 수 있음 - [시작:끝]과 같이 명시하여 [시작,끝]에 해당하년 부분 문자열을 추출 - 시작, 끝 인덱스가 생략이 되어 있다면, 0 부터 혹은 끝까지로 간주<jupyter_code>a = "hello world"
print(a[0:5])<jupyter_output>hello<jupyter_text>문자열 함수  - 문자열은 여러가지 기능 제공을 위한 함수를 내장 - 함수란 특정 기능을 하는 코드로 언제든지 호출하여 해당 기능을 사용 가능하도록 구성한 코드 - 추후에 함수에 대해 자세히 다룰 예정<jupyter_code>a = "hello world"

a.upper()<jupyter_output><empty_output><jupyter_text>replace - 문자열 내의 특정 문자를 치환<jupyter_code>a = "hello world"

a.replace('h','j')<jupyter_output><empty_output><jupyter_text>format  = 문자열 내의 특정한 값을 변수로 부터 초기화하여 동적으로 문자열을 생성<jupyter_code>temperature = 25.5
prob = 80.0

a = "오늘 기온{}도 이고, 비올 확률은 {}% 입니다.".format(temperature, prob)

a<jupyter_output><empty_output><jupyter_text>split - 문자열을 특정한 문자 구분하여 (delimiter) 문자열의 리스트로 치환<jupyter_code>a = "Hello World what a nice weather"
a.split()<jupyter_output><empty_output><jupyter_text>list & Tuple - 복수개의 값을 담을 수 있는 데이터 구조 - 실생활에서 사용하는 리스트(학생 리스트, 성적 리스트 등등) 과 동일한 의미로 이해 - list - mutable(생성된 후에 변경 가능) - tuple - immutable(생성된 후에 변경 불가능)  리스트 초기화 - [] 안에 값을 담아서 생성 - list() 함수로 생성 - str.split()함수로 생성<jupyter_code>a = []

a
a = [1,2,3,5,10]
a<jupyter_output><empty_output><jupyter_text>list() 함수  - 다른 데이터 타입을 리스트로 변환할 때도 사용<jupyter_code>a = 'hello world'
b = list(a)
c = (1,2,3)
d = list (c)
b,d<jupyter_output><empty_output><jupyter_text>string split 함수  - 구분자로 구분되는 리스트를 반환 (빈번히 사용 됨)  리스트 indexing - 문자열의 인덱싱과 동일하게 동작 - [] 연산자를 이용하여 항목 얻어오기 - [i] - i번째 원소를 반환 - i 가 음수인 경우도 가능하며 마지막 원소가 -1로 하여 앞으로 갈 때마다 1씩 감소함<jupyter_code>a = [1,2,3,4,5,6]

a[2],a[4]<jupyter_output><empty_output><jupyter_text>리스트 개별 아이템에 접근 - 인덱스에 접근하여 값을 업데이트 가능<jupyter_code>a = [1,2,3,4,5,6,7,8]

a[1:7:2]<jupyter_output><empty_output><jupyter_text>list 멤버 함수 - 생성된 리스트 객체에 동작하는 함수 - 향후, 클래스와 멤버 함수 개념을 이해할 예정  append()   - 리스트의 끝에 항목을 추가함<jupyter_code>a = [1,2,3,4,5]

a.append(10)

a<jupyter_output><empty_output><jupyter_text>extend()  - 리스트를 연장  - +=로도 가능함<jupyter_code>a = [1,2,3,4,5]
b = [6,7,8,9,10]

a.extend(b)

a<jupyter_output><empty_output><jupyter_text>insert()로 항목 추가 - 리스트에 원하는 위치에 추가 가능 - 앞에 인덱스. 뒤에 아이템을 명시<jupyter_code>a = [1,3,4,5,6]
a.insert(1,40)

a<jupyter_output><empty_output><jupyter_text>remove() - 값으로 항목 삭제<jupyter_code>a = [1,2,30,4,5]

a.remove(30)

a<jupyter_output><empty_output><jupyter_text>pop() - 지우고자 하는 아이템을 반환후, 삭제<jupyter_code>a = [1,2,3,4,5]
a.pop(1)

a<jupyter_output><empty_output><jupyter_text>index() - 찾고자 하는 값의 인덱스 반환<jupyter_code>a = [1,2,3,4,5]
a.index(5)<jupyter_output><empty_output><jupyter_text>in 키워드   - 리스트 내에 해당 값이 존재하는지 확인  - value in [list]  - True, False 중 한가지로 반환<jupyter_code>a = [1,2,3,4,5,10]
b = 7

c = b in a

c<jupyter_output><empty_output><jupyter_text>list 정렬 - sort() -> 리스트 자체를 내부적으로 정렬 - sorted() -> 리스트의 정렬된 복사본을 변환<jupyter_code>a = [9,10,7,19,1,2,20,21,7,8]

a.sort(reverse=True)
b = sorted(a)

a
b<jupyter_output><empty_output><jupyter_text>Tuple - 리스트와 같이 복수개의 값을 갖는 컬렉션 타입 - 생성된 후 변경이 불가능<jupyter_code>a = [1,2,3]
b = (1,2,3)

print(type(a))
print(type(b))<jupyter_output><class 'list'>
<class 'tuple'><jupyter_text>tuple unpacking - 튜플의 값을 차례대로 변수에 대입<jupyter_code>a = (100,200)

type(a)

a,b = 100,200

print(a,b)<jupyter_output>100 200<jupyter_text>연습문제<jupyter_code>a = 5
b = 4

temp = a
a = b
b = temp

a, b = b, a

print(a,b)<jupyter_output>5 4<jupyter_text>dictionary - 키와 값을 갖는 데이터 구조 - 키는 내부적으로 hash값으로 저장 - 순서를 따지지 않음, 즉, 인덱스가 없음<jupyter_code>a ={'Korea':'Seoul', 
    "Canada":"Ottawa", 
    "USA":"Washington D.C"}
b = {0:1 , 1:6 , 7:9 , 8:10}

print(b[1])

#print(a['Korea'])<jupyter_output>6<jupyter_text>항목추가 및 변경 - 기존에 키가 존재하면, 새로운 값으로 업데이트 - 존재하지 않으면, 새로운 키, 값 생성<jupyter_code>a ={'Korea':'Seoul', 
    "Canada":"Ottawa", 
    "USA":"Washington D.C"}

a['Japan'] = "Tokyo"

a<jupyter_output><empty_output><jupyter_text>update() - 두 딕셔너리를 병합함 - 겹치는 키가 있따면 parameter로 전달되는 키 값이 overwrite 된다.<jupyter_code>a = {'a':1,'b':2,'c':3}
b = {'a':2, 'd':4 , 'e':5}

a.update(b)

a<jupyter_output><empty_output><jupyter_text>key 삭제 - del 키워드 사용<jupyter_code>a = {'a':1,'b':2,'c':3}
print(a)

# a.pop('b')
del a['b']
a<jupyter_output>{'a': 1, 'b': 2, 'c': 3}<jupyter_text>clear() - 딕셔너리의 모든 값을 초기화<jupyter_code>a.clear()
a<jupyter_output><empty_output><jupyter_text>in - key 값 존재 확인 - O(1)연산 = 딕셔너리의 크기와 관계없이 항상 연산의 속도가 일정하다는 의미<jupyter_code>a = {'a':1,'b':2,'c':3}
print(a)

'b' in a
'd' in a<jupyter_output>{'a': 1, 'b': 2, 'c': 3}<jupyter_text>value access - dict[key]로 접근, 키가 없는 경우 에러 발생 - .get()함수로 접근, 키가 없는 경우 None 반환<jupyter_code>print(a.get('d'))<jupyter_output>None<jupyter_text>모든 keys, values 접근 - keys() - 키만 반환 - values() - 키값만 반환 - items() - 키, 값의 튜플을 반환<jupyter_code>print(a)
print(list(a.keys()))
print(list(a.values()))

list(a.items())<jupyter_output>{'a': 1, 'b': 2, 'c': 3}
['a', 'b', 'c']
[1, 2, 3]<jupyter_text>set - dictionary 에서 key만 활용하는 데이터 구조로 이해  - 수학에서의 집합과 동일한 개념<jupyter_code>a = {1,1,2,2,3,3,4,1,5}

print(a)<jupyter_output>{1, 2, 3, 4, 5}<jupyter_text>set() 으로 집합으로 변환<jupyter_code>a = [1,1,2,2,3,3,4,1,5]
print(a)

b = set(a)
print(b)<jupyter_output>[1, 1, 2, 2, 3, 3, 4, 1, 5]
{1, 2, 3, 4, 5}<jupyter_text>set operations - 수학연산과 동일 - 교집합, 합집합, 차집합 등 지원<jupyter_code>a = {1,2,3}
b = {2,3,4}

print(a.union(b)) #합집합
print(a.intersection(b)) #교집합
print(a.difference(b)) #차집합
print(a.issubset(b)) #부분집합

sam_list = [1,3,5,6,7,10]

a = sam_list[-1]+sam_list[-2]

a<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1777583187390543, 'fraction_numerical': 0.040805604203152365, 'mean_word_length': 4.8815653964984556, 'pattern_counts': {'":': 4, '<': 119, '<?xml version=': 0, '>': 121, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '32', 'dir': 'jupyter-structured-clean-dedup', 'id': '154452', 'license': 'MIT', 'n_tokens_mistral': 3850, 'n_tokens_neox': 4500, 'n_words': 639, 'path': 'Summary/Python_02.ipynb', 'repo_name': 'CATERINA-SEUL/TIL', 'size': '5710'}