프로그래밍 언어/Python

파이썬 Python 실습 :: 리스트 심화 실습 (요소 추가, 삭제, 수정, 복사)

gamjadori 2024. 1. 4. 11:04
728x90

<리스트 추가>

  • 리스트에 요소 추가: .append() / .extend() / insert() + 슬라이싱 이용
  • .append(): 새로운 요소를 맨 끝에 추가
  • .extend(): iterable자료형(반복 가능한 데이터)의 항목 각각을 array의 끝에 하나씩 추가 / 기존의 list에 다른 list 추가
  • insert(index, 항목): 요소의 원하는 위치 i 앞에 추가할 값 x를 삽입
  • index이므로 0번째부터 시작
>>> a = [10, 20, 30]
>>> a.append(40)
>>> print(len(a), a)
4 [10, 20, 30, 40]

>>> a = 40
>>> a = 50
>>> a = [40, 50]
>>> a.append([50, 60]) // [50, 60]을 하나의 요소로 생각하여 추가
>>> print(a)
[40, 50, [50, 60]]

>>> a.extend([50, 60]) // 50, 60을 각각의 요소로 생각하여 추가
>>> print(a)
[40, 50, [50, 60], **50, 60**]
** a.extend(50, 60) 실행했을 시, 오류 발생
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    a.extend(50, 60)
TypeError: list.extend() takes exactly one argument (2 given)

>>> a.insert(3, '가') // 3번째 요소에 '가'라는 데이터 추가
>>> print(a)
[40, 50, [50, 60], '가', 50, 60]

>>> a[2:2] = ['가', '나'] // 두 번째부터 두 번째 사이에 '가', '나'를 추가한다
>>> print(a)
[40, 50, '가', '나', [50, 60], '가', 50, 60]
  • 리스트 요소 삭제: pop() / .remove()
  • pop(): 배열의 마지막 요소를 제거하고, 제거한 요소를 반환
>>> a.pop() # 파라미터가 없으면 맨 뒤의 요소 삭제
60 (맨 뒤의 요소 출력과 동시에 삭제)
>>> print(a)
[40, 50, '가', '나', [50, 60], '가', 50]

>>> a.pop(2) # 지정한 인덱스 위치의 요소 삭제
'가'
>>> print(a)
[40, 50, '나', [50, 60], '가', 50]

>>> a.remove('나')
>>> print(a)
[40, 50, [50, 60], '가', 50]

** 요소 중복 확인
>>> print(a.count(40)) // 중복됐는지 확인 (print 결과가 1이 나오면 중복되지 않은 것)

<리스트 조작>

  • .reverse(): 리스트 순서 뒤집기
>>> a.reverse()
>>> print(a)
[50, '가', [50, 60], 50, 40]

<할당>

>>> a = [1, 2, 3, 4, 5]
>>> b = a
>>> c = 10
>>> d = c
>>> print(a, ':', b)
[1, 2, 3, 4, 5] : [1, 2, 3, 4, 5]
>>> print(c, ':', d)
10 : 10

>>> a[0] = 10
>>> b[1] = 20
>>> print(a, ':', b)
[10, 20, 3, 4, 5] : [10, 20, 3, 4, 5]

**** 설명**
a[0] = 10
1. a의 0번째가 10로 변경 [10, 2, 3, 4, 5]
2. b는 a와 같으므로 b의 목록도 [10, 2, 3, 4, 5]로 변경
b[1] = 20
3. b의 1번째가 20으로 변경 [10, 20, 3, 4, 5]
4. a는 b와 같으므로 a의 목록도 [10, 20, 3, 4, 5]로 변경
>> 결과 [10, 20, 3, 4, 5] : [10, 20, 3, 4, 5]

print(a is b)
True

 

<복사>

  • .copy(): . 앞에 있는 요소를 복사
>>> a = [10, 20, 30, 40]
>>> b = a.copy()
>>> print(a is b) // 리스트에 있는 원소의 항목이 같을지라도 두 집은 다르다
False
>>> print(a == b) // 리스트에 있는 원소의 항목이 같다
True

<최솟값, 최댓값> min() / max()

>>> a = [38, 21, 53, 62, 19]
>>> smallest = a[0] // 제일 작은 값을 0번째로 지정
>>> for i in a:
		    if i < smallest: // i(a의 요소)가 현재 지정되어 있는 제일 작은 값보다 작으면 i가 최솟값으로 지정됨
		        smallest = i
>>> print(smallest)
19
>> 요소들과 비교했을 때, 가장 작은 값을 찾을 때까지 for문을 반복하여 최종적으로 최솟값 출력

>>> a = [38, 21, 53, 62, 19]
>>> largest = a[0]
>>> for i in a:
		    if i > largest:  // i(a의 요소)가 현재 지정되어 있는 제일 작은 값보다 크면 i가 최댓값으로 지정됨
		        largest = i
>>> print(largest)
62
>> 요소들과 비교했을 때, 가장 큰 값을 찾을 때까지 for문을 반복하여 최종적으로 최댓값 출력

**<간단하게 표현>**
>>> print(min(a))
19
>>> print(max(a))
62

<리스트 내포>

  • [표현식 for 변수 in 반복 가능한 대상]
>>> a = [i for i in range(10)]
>>> print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> a = [i * -1 for i in range(10)]
>>> print(a)
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

<리스트 변환>

  • map(): 여러 개의 데이터를 한번에 다른 형태로 변환
  • map(무엇으로 변환할 건지, 대상)
>>> a = [1.4, 2.6, 3.7, 4.3, 5.7]
>>> a = list(map(int, a)) // a의 요소를 int(정수)로 변환
>>> print(a)
[1, 2, 3, 4, 5]
>>> a = list(map(round, a)) // a의 요소를 반올림하여 출력
>>> print(a)
[1, 3, 4, 4, 6]
>>> a = list(map(str, a)) // a의 요소를 문자열로 변경 'n'으로 출력
['1', '3', '4', '4', '6']