파이썬 자료구조_001 리스트

이새롬·2023년 2월 14일
0

python

목록 보기
14/21
post-thumbnail

자료구조란?
여러 개의 데이터가 묶어있는 자료형을 컨테이너 자료형이라고 하고,
이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.

데이터를 묶어 관리하는 것.
보통 담는 변수가 여러가지라 변수명을 복수명으로 적어주면 관리에 좋음.

리스트

배열과 같이 여러 개의 데이터를 나열한 자료구조.
데이터는 , 로 구분한다
데이터 하나하나는 요소, element, item이라 한다.

리스트 안에 데이터가 섞어서도 넣을 수 있음.
strs = [3.14, '십', 20, 'one']

컨테이너 안에 또 따른 컨테이너가 들어갈 수 있음.
datas = [10,20,30, [40,50,60] ]

리스트는 출력 시
print('students : {}'.format(students))

students : ['알라딘', '자스민', '이아고', '자파']

[ ]안에 담겨서 나온다.

아이템 조회

인덱스

리스트 안에 들어가있는 데이터에 자동으로 부여되는 번호표
번호표는 0번부터 부여된다.

데이터를 담은 변수는 list라 나오지만 그 요소 하나는 성격에 맞는 걸로 나옴
글자면 str, 정수면 int ..

  • 리스트의 길이 == 아이템 갯수
    len()을 이용하여 리스트 변수를 담아주면 됌.
    len()을 이용하여 for문 range에 담을 수 있음.

리스트 조회

1. for문

for i in range(len(mySport)):
    print('mySport[{}]: {}'.format(i,mySport[i]))

2. while문

n = 0
while n < len(mySport):
    print('mySport[{}]: {}'.format(n,mySport[n]))
    n += 1

3. item

for item in mySport:
    print(item)

내부 리스트

studentCnts = [[1,19], [2,20], [3,22], [4,18], [5,21]]

for classNo, cnt in studentCnts:
    print('{}학급 학생수: {}'.format(classNo,cnt))

classNo는 1,2,3,4를 가리킴
cnt는 19,20,22,18를 가리킴

  • 출력값
1학급 학생수 : 19
2학급 학생수 : 20
3학급 학생수 : 22
4학급 학생수 : 18
5학급 학생수 : 21

내부리스트 조회

  1. for문을 활용하여 idex 출력
minScore = 60
scores = [['국어',58],
          ['영어',77],
          ['수학',89],
          ['과학',99],
          ['국사',50]]

for item in scores:
    if item[1] < minScore:
        print('과락 과목: {}, 점수: {}'.format(item[0],item[1]))

for subject, score in scores:
    if score < minScore:
        print('과락 과목: {}, 점수: {}'.format(subject, score))


for subject, score in scores:
    if score >= minScore: continue
    print('과락 과목: {}, 점수: {}'.format(subject, score))


-----출력
과락 과목: 국어, 점수: 58
과락 과목: 국사, 점수: 50
  1. while문 활용하여 idex 출력
minScore = 60
scores = [['국어',58],
          ['영어',77],
          ['수학',89],
          ['과학',99],
          ['국사',50]]
n = 0
while n < len(scores):
    if scores[n][1] < minScore:
        print('과락 과목: {}, 점수: {}'.format(scores[n][0],scores[n][1]))
    n += 1

---

n = 0
while n < len(scores):
    if scores[n][1] >= minScore:
        n += 1
        continue

    print('과락 과목: {}, 점수: {}'.format(scores[n][0], scores[n][1]))
    n += 1


---
n = 0
while True:
    print(cars[n])
    n += 1

    if n == len(cars):
        break
  • ) 007 예제~!
    while문은 변수를 이용하여 전체학급수를 구함

enumerate() 함수 ★

sports = ['탁구','배구','양궁','축구','테니스']


for idx, value in enumerate(sports):
    print('{} : {}'.format(idx, value))

-----출력

0 : 탁구
1 : 배구
2 : 양궁
3 : 축구
4 : 테니스

리스트 외에 문자열에도 사용 가능


아이템 추가 .append()

리스트명.append('아이템')

리스트에 맨 마지막에 들어가게된다!

예시코드

💻출력


추가 아이템 위치 지정: insert(자리위치,'아이템')

사이에 들어가면 그 뒤에 아이템들은 index자리수가 하나씩 추가된다.

예시코드

💻출력


아이템 삭제 : pop()

마지막 인덱스에 해당하는 아이템 삭제
기본자리는 마지막 자리

자리 지정하고싶으면 자리번호 넣으면 됌!

<기본>

<인덱스로 삭제하고싶은 곳 지정>

  • 인덱스 1번인 자스민이 삭제됌!

아이템 삭제 2 : remove('아이템')

1가지 아이템을 삭제하려면 리스트명.remove('아이템')
삭제하려는 데이터가 2개 이상이면 while문을 이용하자

'아이템 ' in 리스트
리스트 안에 아이템이 있으면 True

💻출력

리스트연결

확장 extend()

리스트에 또 다른 리스트를 연결(확장) 할 수 있다.

vegetable = ['감자','토마토','애호박']
fruit = ['수박','딸기','바나나']

['감자','토마토','애호박'] extend() ['수박','딸기','바나나']

vegetable.extend(fruit)

vegetable = ['감자','토마토','애호박','수박','딸기','바나나']

+ 덧셈연산자

덧셈연산자를 이용해서 리스트를 연결할 수도 있다.

A리스트 + B 리스트 = C리스트

result = students1 + students2

reslut :['알라딘', '자파', '자스민', '이아고', '자파', 
		'아부', '자파', '버즈', '우디', '포키', '햄', '포테이토헤드']

리스트 아이템 정렬

오름차순으로 정렬: sort()

내림차순으로 정렬: sort(reverse=True)

<예시 코드>

korea = ['가','다','바','마','라','나']
print('한글: {}'.format(korea))

korea.sort()
print('오름차순 정렬: {}'.format(korea))

korea.sort(reverse=True)
print('내림차순 정렬: {}'.format(korea))

💻출력

아이템 순서 뒤집기: reverse()

students = ['버즈','우디','포키','햄','포테이토헤드']
print('정렬 : {}'.format(students))

students.reverse()
print(f'뒤집기: {students}')

💻출력


리스트 슬라이싱

원하는 아이템 뽑아내기

리스트명 [n:m]
인덱스 n 이상 m 미만까지 추출함

리스트명 [:m]
인덱스 처음부터 m미만까지 추출

  • 음수값까지 지정됌. (뒤에서부터 간다)

문자열도 슬라이싱 가능함!
str = '가나다'

슬라이싱 단계를 정할 수도 있다.

members = ['토끼','강아지','고양이','병아리','말','송아지']
print('member:{}'.format(member[1:5:2]))

인덱스 1~5는 ['강아지', '고양이', '병아리', '말'] 이지만
추출은 2씩 건너뛴 강아지, 병아리만 추출됌

아이템 변경

numbers = [1,2,3,4,5]
print(numbers)
print('일부분: {}'.format(numbers[1:3]))
numbers[1:3] = ['two','three','four']
print(numbers)

💻출력

  • 슬라이싱 갯수가 모자라면 끝부분 그대로 잘림

slice()함수
변수명[slice(시작자리,끝자리)]

💬 코멘트

파이썬 기초공부만큼이나 재밌었던 수업이였다.
실습도 하나하나 다 따라하다보니 시간이 금세가서 놀랐지만..!
재밌었던 만큼 활용도가 높은 기본기 수업이라 잘 다져놔야겠다👊👊👊

0개의 댓글