[파이썬]-자료형2(리스트,튜플)

m·2024년 6월 2일

파이썬

목록 보기
2/7

리스트(list)

리스트명 = [요소1, 요소2, 요소3, ...]

-> 리스트 자료형
1) 리스트 안에는 어떠한 자료형도 포함 가능하다. null형태도 가능, 리스트 안에 리스트도 가능.

-> 리스트 인덱싱
1) 문자열과 같이 인덱싱 적용 가능 ex) a=[1,2,3]; a[0]은 1
2) 요솟값 간의 덧셈 ex) a[0]+a[1]은 3
3) a[-1]은 리스트 a의 마지막 요솟값 ex) a[-1]은 3
4) 리스트 내에 리스트 가능 ex) a = [1,2,3,[4,5]]; a[-1][0]은 4

-> 리스트 슬라이싱
1) 문자열과 같이 슬라이싱 적용 가능 ex) a[0:2]는 [1,2], a[2:]는 [3,[4,5]]

-> 리스트 연산하기
1) 더하기 ex) a=[1,2,3]; b=[4,5,6]; a+b는 [1,2,3,4,5,6]
2) 반복하기 ex) a*3은 [1,2,3,1,2,3,1,2,3]
3) 리스트 길이 구하기 ex) len(a)는 9

-> 리스트의 수정과 삭제
1) 리스트 값 수정 ex) a[1]=4; a는 [1,4,3,1,2,3,1,2,3]
2) 리스트 값 삭제 ex) del a[1]은 [1,3,1,2,3,1,2,3], del a[2:]은 [1,3]

이거 수정,삭제 한 거 a에 대입 안 해도 됨. 바로바로 수정,삭제

-> 리스트 관련 함수
1) append - 리스트에 요소 추가

  • 리스트의 맨 마지막에 추가됨. ex) a=[1,2,3]; a.append(4); a는 [1,2,3,4]
  • 어떤 자료형도 추가할 수 있음. ex) a.append([5,'a']); a는 [1,2,3,4,[5,'a']]
    2) sort - 리스트 정렬
  • 리스트의 요소를 순서대로 정렬 ex) a=[1,3,4,2]; a.sort(); a는 [1,2,3,4]
  • 문자의 경우 알파벳 순서로 정렬
  • 숫자와 알파벳 둘 다 있을 때는 정렬 안 됨. 아래같은 오류 남

이거도 a.sort() 하면 바로 정렬 됨. 근데 a=a.append()나 a=a.sort()하면 오류 안 나고 None 뜸 -> 이 함수들이 호출되면 아무것도 반환되지 않아서 그런 거임. 아까 del은 반환값이 없어서 오류난 거임
헐 순간 [1,2,3,a,b]하고 왜 오류나지? 하고 있었음 [1,2,3.'a','b']임;.;

3) reverse - 리스트 뒤집기

  • 리스트를 역순으로 뒤집어 줌 (역순 정렬 아니고 말그대로 뒤집기) ex) a=['a','d','c']; a.reverse(); a는 ['c','d','a']

4) index - 인덱스 반환

  • 요소를 검색하여 위치 값 반환 ex) a=[1,2,3]; a.index(3)은 2(리스트 a의 세번째 요소)
  • 값이 존재하지 않으면 값 오류

5) insert - 리스트에 요소 삽입

  • 리스트명.insert(a,b) 즉, a번째 위치에 b를 삽입 ex) a=[1,2,3]; a.insert(0,5); a는 [5,1,2,3]

6) remove - 리스트 요소 제거

  • 리스트명.remove(a) 즉, 리스트에서 첫 번째로 나오는 a를 삭제 ex) a=[1,2,3]; a.remove(1)은 [2,3]
  • 값이 여러 개여도 첫 번째 요소만 삭제

7) pop 리스트 요소 끄집어내기

  • 리스트명.pop()리스트의 맨 마지막 요소를 돌려주고(반환) 해당 요소 삭제
  • 리스트명.pop(a) 즉, 리스트 a번째 요소를 돌려주고(반환) 해당 요소 삭제
다른 함수들과 달리 a=a.pop()해도 오류 안 남. pop함수는 반환값이 있기 때문.

8) count - 리스트에 포함된 요소 x의 개수 세기 ex) a=[1,2,3,1]; a.count(1)은 2

9) extend - 리스트 확장

  • 리스트에 리스트를 더하는 함수 ex) a=[1,2,3]; a.extend([5,6]); a는 [1,2,3,5,6] 또는 b=['a','b']; a.extend(a)는 [1,2,3,5,6,'a','b']
  • 괄호 안에는 무조건 리스트만 가능하다.
이거 그냥 a.append(['a','b'])해도 되지 않음? 이라고 생각할 수 있는데 append는 리스트가 그대로 추가되는 거고 extend는 []없이 원래 리스트가 확장되는 거임. 대신 리스트 연산 때 배웠던 더하기 써서 extend와 똑같은 결과 낼 수 있음. a+=['a','b']하면 []없이 확장됨.

튜플(tuple)

튜플명 = (요소1, 요소2, 요소3, ...)

-> 리스트와 유사한 자료형
1) 다른 점은?

  • 리스트는 [], 튜플은 ()
  • 리스트는 요솟값 생성/삭제/수정 가능하고 튜플은 불가능 -> list는 let이고 튜플은 const라고 생각하면 편함
  • 튜플은 1개 요소만을 가질 때 무조건 요소 뒤에 쉼표를 붙여야 함. ex) t2=(1,)
이거 t2=(1)도 오류 안 나고 t2=(1,)도 오류 안 나길래 둘 다 a[0]=2 해서 결과 봤더니 다른 자료형으로 인식하고 있던 거 맞았음

2) 튜플 요솟값 삭제/변경

  • 아까 말했듯이 튜플은 리스트와 다르게 삭제,변경이 불가능함.
  • 인덱싱/슬라이싱 기법을 사용해야 함. 사용법은 원래 알던 거와 같음.

3) 튜플 연산하기

  • 더하기, 곱하기 길이구하기 모두 리스트에서 하던 방식과 같음

0개의 댓글