Coding/Python

[코드잇] 파이썬(python) 리스트(인덱스, 추가, 정렬), in 함수, Nested list, sort, reverse, index, remove

폴밴 2021. 9. 9. 14:15

리스트

  • 변수에 값을 여러개 저장하려 할 때 사용
  • 리스트에 있는 하나의 값을 요소라 부른다.
numbers = [2, 4, 6, 8, 10]
names = ["가", "나", "다", "라"]

print(names)  # ['가', '나', '다', '라']
print(numbers)  # [2, 4, 6, 8, 10]
  • 인덱싱 (indexing)파이썬에서 인덱스는 0부터 시작한다. (0, 1, 2, 3, ... )
  • 요소에 번호를 매기고 불러올 때 사용
numbers = [2, 4, 6, 8, 10]
names = ["가", "나", "다", "라"]

print(names[0])  # 가
print(numbers[3])  # 8

#요소를 불러와 새로운 변수 지정
num_1 = numbers[1]  # 4
num_2 = numbers[2]  # 6
print(num_1+num_2)  # 10
  • 마이너스 인덱스인덱스가 -1 이면 제일 끝의 요소이고, -2 면 뒤에서 두 번째 요소이다. (..., -4, -3, -2, -1)
  • 맨 끝에서부터 -1 로 인덱스가 시작하고, 왼쪽으로 순서대로 -1 씩 추가된다.
numbers = [2, 4, 6, 8, 10]

print(numbers[-1]) # 10
print(numbers[-2]) # 8
print(numbers[-5]) # 2
  • 인덱스 슬라이싱 (index slicing)numbers[:2] : index 0 부터 index 1 까지 요소를 가져온다. (요소 2개)
  • numbers[2:] : index 2 부터 끝까지 요소를 가져온다.
  • 리스트의 일부분인 요소를 한번에 가져올 수 있다.
numbers = [2, 4, 6, 8, 10]

print(numbers[0:4])  # [2, 4, 6, 8] 인덱스 0부터 3까지
print(numbers[2:])  # [6, 8, 10] 인덱스 2부터 끝까지
print(numbers[:3])  # [2, 4, 6] 인덱스 처음부터 2까지

new_list = numbers[:3]
print(new_list[2])  # 6
  • 리스트의 값 바꾸기
  • 리스트에 있는 요소의 값을 지정 연산자 "=" 을 통해서 바꿀 수 있다.
numbers = [2, 4, 6, 8, 10]

numbers[0] = 7  # 2 대신 7로 바꾸기
print(numbers)  # [7, 4, 6, 8, 10]
numbers[0] = numbers[1] + numbers[2]  # 2를 4 + 6 = 10 으로 바꾸기
print(numbers)  # [10, 4, 6, 8, 10]

리스트 함수

  • list.append 를 통해서 리스트에 가장 오른쪽에 요소를 추가할 수 있다.
  • len(list) 로 리스트의 길이 (요소의 갯수)를 알 수 있다.
numbers = []

# 추가 연산
numbers.append(5)
numbers.append(8)  # 새로운 값을 가장 오른쪽에 추가
print(numbers)  # [5, 8]

print(len(numbers))  # 리스트의 길이 = 2
  • del list[index_num] 으로 리스트의 특정 인덱스의 값을 삭제할수 있다.
numbers = [2, 3, 5, 7, 11, 13, 17, 19]

del numbers[3] # index 3인 7 삭제
print(numbers) # [2, 3, 5, 11, 13, 17, 19]
  • list.insert(index_num, value) 를 통해 특정 인덱스에 값을 추가할 수 있다.
numbers = [2, 3, 5, 7, 11, 13, 17, 19]

# 삽입연산
numbers.insert(4, 36) # index 4에 36 삽입
print(numbers) # [2, 3, 5, 7, 36, 11, 13, 17, 19]

리스트 정렬

  • sorted(list) 는 기존 리스트를 건드리지 않고, 정렬된 새로운 리스트를 리턴한다.
numbers = [19, 13, 2, 5, 3, 11, 7, 17]

new_list = sorted(numbers)
print(new_list)  # [2, 3, 5, 7, 11, 13, 17, 19]

new_list = sorted(numbers, reverse = True)
print(new_list)  # [19, 17, 13, 11, 7, 5, 3, 2]

print(numbers)  # [19, 13, 2, 5, 3, 11, 7, 17]  기존 리스트의 값은 바뀌지 않는다.
  • list.sort() 는 아무것도 리턴하지 않고, 기존 리스트를 수정해 정렬한다.
numbers = [19, 13, 2, 5, 3, 11, 7, 17]

print(numbers.sort())  # None

numbers.sort()
print(numbers)  # [2, 3, 5, 7, 11, 13, 17, 19]

numbers.sort(reverse = True)
print(numbers)  # [19, 17, 13, 11, 7, 5, 3, 2]

리스트 꿀팁

  • 리스트에서 원하는 값 찾기 (in 함수)거꾸로 값이 없는지 확인하려면 not in 을 쓰면 된다.
  • 리스트에서 값의 존재를 확인하려면 in 함수를 사용하면 된다. 안에 찾는 값이 있다면 True, 없다면 False를 출력한다.
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23]
print(7 in primes)  # True
print(12 in primes)  # False

print(7 not in primes)  # False
print(12 not in primes)  # True
  • 리스트 안의 리스트 (Nested List)
  • 리스트 안에 또 다른 리스트를 만들 수 있다.
# 세 번의 시험의 학생별 성적
grades = [[62, 75, 77], [78, 81, 86], [85, 91, 89]]

# 첫 번째 학생의 성적
print(grades[0])  # [62, 75, 77]

# 두 번째 학생의 첫 시험 성적
print(grades[2][1])  # 91

# 첫 번째 시험의 평균
print(((grades[0][0]) + (grades[1][0]) + (grades[2][0]) )/ 3)  # 75.0
  • sort 메소드
  • list.sort()는 새로운 리스트를 생성하지 않고 정렬된 상태로 바꿔준다.
numbers = [5, 3, 7, 1]
numbers.sort()
print(numbers)  # [1, 3, 5, 7]
  • reverse 메소드
  • list.reverse() 는 원소들을 뒤집어진 순서로 배치한다.
numbers = [5, 3, 7, 1]
numbers.reverse()
print(numbers)  # [1, 7, 3, 5]
  • index 메소드
  • list.index(x) 는 리스트에서 x 의 값을 갖고 있는 원소의 인덱스를 리턴해준다.
members = ["영훈", "윤수", "태호", "혜린"]
print(members.index("윤수"))  # 1
print(members.index("혜린"))  # 3
  • remove 메소드
  • list.remove(x) 는 리스트에서 x 의 값을 갖고 있는 원소를 삭제한다.
members = ["영훈", "윤수", "태호", "혜린"]
members.remove("태호")  # 태호를 리스트에서 삭제
print(members)  # ['영훈', '윤수', '혜린']