* list, 리스트 : 대괄호 내부에 여러 종류의 자료형으로 요소(element)가 나열되어 있는(구성되어 있는)
ex) [1, 2, 3, 4] ["안", "녕", "하", "세", "요"] [ 273, 12, "문자", True]
▶ 문자에서 사용된 것 처럼 요소들의 각 주소를 index, 인덱스라고 부릅니다.
▶ 요소 변경을 원하면 변경을 원하는 인덱스 번호를 기입하고 요소 적기 ex. list_a[0]="이거" = "재할당"이라고함
A. 대괄호 안에 음수를 넣어 뒤에서 부터 요소 선택 가능(문자인덱스와 동일)
B. 접근 연산자를 이중으로 사용 가능(문자열에서만)
C. 리스트 안에 리스트도 사용 가능
※IndexError : 리스트의 길이를 넘는 인덱스로 요소에 접근하려고 할때 발생하는 에러
D. 문자열은 리스트로 바꿔서 가능.
list_ex = [88,11,"이것입니다", True]
print(list_ex)
list_ex[3] = "변경된 요소"
print(list_ex)
#뒤에서부터 요소 선택
print("A번 예시----")
print("list_ex[-1]는", list_ex[-1], "list_ex[-2]는", list_ex[-2])
#이중으로 사용
print("B번 예시---")
print("list_ex[2]는 \'", list_ex[2],
"\'index[2]에서 가져온 문자열에서 3번째 글자는 list_ex[2][2] = ", list_ex[2][2])
#리스트안에 리스트
print("C번 예시---")
list_in=[[1,2,3], [4,5,6], [2,5,67]]
print(list_in)
D. 리스트 연산하기
1. + : 리스트와 리스트를 '연결'하는 연산자. 문자열에 적용되는거랑 똑같
2. * : 리스트의 자료를 반복가능하게. 문자열에 적용되는거랑 똑같22
3. len() : 리스트의 요소 개수를 구해줌 / 문자열에서는 글자 수를 세어줬었음
len(str.encode('utf-8')) => 한글 바이트 수 반환해주는거
E. 리스트 요소에 추가하고 제거하고
1. 추가하기
a. 리스트명.append(요소) : 맨 뒤에 새로운 요소를 추가. 리스트를 넣으면 리스트 하나가 요소가 되어서 추가됨
b. 리스트명.insert(위치, 요소) : 내가 원하는 곳에 요소를 추가
c. 리스트명.extend([요소,요소,요소]) : 여러개의 요소를 한번에 추가할때 = append를 여러번 진행하는 것과 같음
▶ list_1 + list_2 = list_1.extend(list_2) : 결과 값은 같지만 다름!
: 1+2 하는건 원본에 어떠한 영향도 주지 않는 비파괴적. 그냥 합쳐지기만 하는거
: extend()는 원본에 영향을 줘서 바꿔서 다시 저장하는 파괴적.
▷ 원본에 어떠한 영향을 주지 않고 하는 비파괴적은 편리하지만 용량이 매우 커질 수 있음
>>> 추가하기 추가
l_1 = ["아","야","어","여"]
l_2 = ["가","나","다","라"]
print(l_1)
print(l_2)
print("l_1 + l_2 는", l_1+l_2)
print("l_1 * 3 는" , l_1*3)
print("len(l_2) =", len(l_2))
#리스트 뒤에 요소 추가
print("--리스트 뒤에 요소 추가하기--")
l_1.append("요")
print(l_1)
print()
#리스트 중간에 요소 추가하기
print("--리스트 중간에 요소 추가하기--")
l_2.insert(0,"마")
print(l_2)
print()
#extend
print("--extend쓰기--")
l_1.extend(["으","이","오"])
print(l_1)
2. 제거하기
a. 인덱스로 제거하기
a-1. del 리스트명[인덱스] : delect...범위를 지정해 한꺼번에 제거 가능 /
한쪽을 입력하지 않으면 전부 제거 가능 ex. del list [:3]
a-2. 리스트명.pop(인덱스) : 매개변수 입력 안하면 맨 마지막 요소 제거
※ 리스트 슬라이싱 : 리스트 [시작_인덱스:끝_인덱스:단계] , 단계를 사용하면 인덱스를 건너뛰며 요소 가져옴
ex. [0:5:2] 2칸씩 뛰어서 0자리부터 4자리까지의 요소를 가져옴
b. 값으로 제거하기
b-1. 리스트.remove(값) : 내부에 여러개 있어도 가장 먼저 발견되는 하나만 제거. 중복된거 제거하려면 반복문
b-2. 리스트.clear() : 모두 제거. 안에 내용만 비울뿐 리스트 자체가 사라지는 것은 아님
3. 리스트.sort() : 리스트 요소 정렬. 기본은 오름차순, 리스트.sort(revers=True) 내림차순 정렬
4. 값 in 리스트 : 리스트 내부에 있는지 확인. True or False로 출력됨
a. 값 not in 리스트 : 리스트 내부에 해당 값이 없는지 확인하는, 반대로 작동됨
append는 return 값을 반환해주지 않고 값을 리스트에 더해주기만 함.
>> 반환값이 없음.
index() - 리스트에서 특정 값의 인덱스 반환
count() - 리스트에서 특정 값의 개수 반환
'is' 는 객체(코드) 비교 >> 같은 리스트인지 is 로 알아볼 수 있음.