List [ ] : mutable sequence type (변경할 수 있는 시퀀스 자료형)
Tuple ( ) : immutable sequence type (변경할 수 없는 시퀀스 자료형)
method (method = 함수)
1. 기본내용
- Add (list만 가능)
- append(요소) : element 한 개 or list 하나씩 중첩으로. 꼭 하나씩 추가 가능
- extend([리스트]) : list + list = 1개의 list 로 가능. append로 일일이 못할때 유용
- insert(인덱스번호,요소) : 특정인덱스에 요소 하나를 추가
- insert(0, 요소): 리스트의 맨 처음에 요소를 추가
- insert(len(리스트), 요소): 리스트 끝에 요소를 추가
- 슬라이스로도 추가가능 : 리스트 끝에 하나의 요소만 추가 가능. a[len(a):] = [값]
# append
>>> a = [10, 20]
>>> a.append(30) # element 추가하기
>>> a.append([500, 600]) # list 추가하기
>>> a
[10, 20, 30, [500, 600]] # 리스트 중첩으로 append 가능
>>> len(a)
4
#extend
>>> a = [10, 20, 30]
>>> a.extend([500, 600])
>>> a
[10, 20, 30, 500, 600] # 리스트 중첩이 아니라 하나로 생성
>>> len(a)
5
#insert
>>> a = [10, 20, 30]
>>> a.insert(2, 500)
>>> a
[10, 20, 500, 30] # 2번인덱스에 500 넣어죠
>>> len(a)
4
>>> a = [10, 20, 30]
>>> a.insert(len(a), 500) # 리스트 끝에 500 넣어죠
>>> a
[10, 20, 30, 500]
>>> a = [10, 20, 30]
>>> a.insert(1, [500, 600]) # 이렇게하면 append로 list 넣는것과 똑같아짐
>>> a
[10, [500, 600], 20, 30]
>>> a = [10, 20, 30]
>>> a[1:1] = [500, 600] # 리스트 중간에 여러개 넣고 싶을때는 슬라이싱
>>> a
[10, 500, 600, 20, 30]
# 슬라이싱으로 끝에 하나 추가하기
>>> a = [10, 20, 30]
>>> a[len(a):] = [500] # a리스트의 길이 = 끝에 추가
>>> a
[10, 20, 30, 500]
>>> a = [10, 20, 30]
>>> a[len(a):] = [500, 600]
>>> a
[10, 20, 30, 500, 600]
- Delete (list만 가능)
- pop(인덱스번호) : 마지막 요소 또는 특정 인덱스의 요소를 삭제. 인덱스번호가 필요.
- remove(값): 특정 값을 찾아서 삭제. 인덱스번호 몰라도 됨.
- index(값) : 값만알고, 인덱스번호를 모를때에 이렇게하면 찾아짐. tuple도 이건가능
- clear() : 리스트의 모든요소 삭제 후 빈리스트로 만듬
# pop = del
>>> a = [10, 20, 30]
>>> a.pop() # 리스트의 마지막 요소 한개만 삭제해
30 # 삭제할 것 보여줌
>>> a
[10, 20]
>>> a = [10, 20, 30]
>>> a.pop(1) # 리스트에서 1번 인덱스 삭제해
20
>>> a
[10, 30]
# remove
>>> a = [10, 20, 30]
>>> a.remove(20) # 20이라는 값을 삭제해줘
>>> a
[10, 30]
# index
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.index(20) # 20이란 값의 인덱스 번호 추출
1
>>> a = (38, 21, 53, 62, 19, 53) # >>>>>>>>>튜플
>>> a.index(53)
2
# clear
>>> a = [10, 20, 30]
>>> a.clear()
>>> a
[]
- ETC (tuple도 가능)
- count(값) : 리스트 안의 특정 값이 몇개인지 카운팅
- reverse() : 순서 반대로 뒤집기
- sort() 또는 sort(reverse=False): 리스트의 값을 작은 순서대로 정렬(오름차순)
- sort(reverse=True): 리스트의 값을 큰 순서대로 정렬(내림차순)
- sorted(리스트이름) : 정렬해서 새로운 리스트로 만듬
# count
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.count(20)
2
# reverse
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.reverse()
>>> a
[40, 20, 15, 30, 20, 10]
# sort
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort()
>>> a
[10, 15, 20, 20, 30, 40] # 기존 리스트를 정렬
# sorted
>>> b = [10, 20, 30, 15, 20, 40]
>>> sorted(b) # .sorted가 아니라 sorted(b)
[10, 15, 20, 20, 30, 40] # 정렬된 새 리스트를 생성
참고 | 리스트가 비어 있는지 확인하기 (from. 코딩도장)
리스트(시퀀스 객체)가 비어 있는지 확인하려면 어떻게 해야 할까요? 방법은 간단합니다. 리스트는 len 함수로 길이를 구할 수 있죠? 이걸 if 조건문으로 판단하면 리스트가 비어 있는지 확인할 수 있습니다.
if not len(seq): # 리스트가 비어 있으면 True
if len(seq): # 리스트에 요소가 있으면 True
하지만 파이썬에서는 이 방법보다 리스트(시퀀스 객체)를 바로 if 조건문으로 판단하는 방법을 권장합니다(PEP 8).
if not seq: # 리스트가 비어 있으면 True
if seq: # 리스트에 내용이 있으면 True
특히 리스트가 비어 있는지 확인하는 방법은 리스트의 마지막 요소에 접근할 때 유용하게 사용할 수 있습니다. 리스트의 마지막 요소에 접근할 때는 인덱스를 -1로 지정하면 되죠?
>>> seq = [10, 20, 30]
>>> seq[-1]
30
만약 리스트가 비어 있을 경우에는 인덱스를 -1로 지정하면 에러가 발생합니다.
>>> a = []
>>> a[-1]
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
a[-1]
IndexError: list index out of range
이때는 if 조건문을 활용하여 리스트에 요소가 있을 때만 마지막 요소를 가져오면 됩니다.
seq = []
if seq: # 리스트에 요소가 있는지 확인
print(seq[-1]) # 요소가 있을 때만 마지막 요소를 가져옴
2. 할당과 복사 (list만 가능)
- =, 할당 : b = a 라고 하면 a와 b가 동일의 리스트를 공유하는 것. 리스트 내용 바뀌면 a,b 모두 바뀜
- copy(), 복사 : a를 가져와 b로 복사. 리스트 내용이 바껴도 원본에는 지장이 없음.
@ = 할당
>>> a = [0, 0, 0, 0, 0]
>>> b = a
>>> b[2] = 99
>>> a
[0, 0, 99, 0, 0]
>>> b
[0, 0, 99, 0, 0]
# copy 복사
>>> a = [0, 0, 0, 0, 0]
>>> b = a.copy()
>>> b[2] = 99
>>> a
[0, 0, 0, 0, 0]
>>> b
[0, 0, 99, 0, 0]
3. 요소 출력하기 (tuple도 가능)
요소를 출력할 때 인덱스 지정으로 요소를 하나 하나씩 추가해야해서 귀찮음. 반복문으로 자동화 출력 시키기.
- for 인덱스, 요소 in enumerate(리스트) : 반복문으로 요소 출력할 때 인덱스도 같이 나오게 하는 방법
- enumerate 추가자료 : https://devpouch.tistory.com/74
# 기본
>>> for i in [38, 21, 53, 62, 19]:
... print(i)
>>> for i in range(len(a)):
... print(a[i])
# 인덱스 번호와 함께 출력하기
>>> a = [38, 21, 53, 62, 19]
>>> for index, value in enumerate(a):
... print(index, value)
...
0 38
1 21
2 53
3 62
4 19
# 인덱스번호 1부터 함께 출력하기
>>> for index, value in enumerate(a, start=1): # start를 1로 지정해줌
... print(index, value)
...
1 38
2 21
3 53
4 62
5 19
- while
# 기본
>>> a = [38, 21, 53, 62, 19]
>>> for i in range(len(a)):
... print(a[i])
...
38
21
53
62
19
# 특정 값을 출력할 때
while i < len(a):
print(a[0]) # 인덱스 번호를 [ ] 사이에 넣어줌
i += 1
38
38
38
38
38
- max, min, sum
>>> a = [38, 21, 53, 62, 19]
>>> min(a)
19
>>> max(a)
62
>>> sum(a)
193
- 리스트 표현식 (list comprehension) : 리스트안에 for와 if를 쓸 수 있는 파이썬의 특징
>>> a = [i for i in range(10)] # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> c = [i + 5 for i in range(10)] # 0부터 9까지 숫자를 생성하면서 값에 5를 더하여 리스트 생성
>>> c
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> d = [i * 2 for i in range(10)] # 0부터 9까지 숫자를 생성하면서 값에 2를 곱하여 리스트 생성
>>> d
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> a = [i for i in range(10) if i % 2 == 0] # 0~9 숫자 중 2의 배수인 숫자(짝수)로 리스트 생성
>>> a
[0, 2, 4, 6, 8]
>>> b = [i + 5 for i in range(10) if i % 2 == 1] # 0~9 숫자 중 홀수에 5를 더하여 리스트 생성
>>> b
[6, 8, 10, 12, 14]
>>> a = tuple(i for i in range(10) if i % 2 == 0) # >>>>>>>>>> 튜플
>>> a
(0, 2, 4, 6, 8)
# 구구단 식
a = [i * j for j in range(2, 10) # 2부터 9까지 나오고
for i in range(1, 10)] # 1부어 9까지 나오고
# i * j 되어서 a라는 리스트에 들어감
- map 함수에 적용하기
- map 함수 : 지정된 함수로 처리해주는 함수. 처리된 결과는 새로운 객체로 저장함 (like copy)
>>> a = [1.2, 2.5, 3.7, 4.6]
>>> a = list(map(int, a)) # a요소들을 int 정수로 map이 함수돌리고 새 list로 저장
>>> a
[1, 2, 3, 4
>>> a = list(map(str, range(10))) # a요소들을 문자열로 map이 함수돌리고 새 list로 저장
>>> a
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> a = (1.2, 2.5, 3.7, 4.6)
>>> a = tuple(map(int, a)) # >>>>>>>> 튜플
>>> a
(1, 2, 3, 4)
728x90
'Study (Data Science) > Python' 카테고리의 다른 글
Unit24. 문자열 함수, 포매팅, format함수, %d (1) | 2022.11.26 |
---|---|
Unit 22. 2차원 리스트 (0) | 2022.11.25 |
참고) Stack & Queue (0) | 2022.11.25 |
Fund 4. Github에 Git Push 하기 (Git & Github의 차이점) (0) | 2022.11.25 |
참고) Scalar, Vector, Matrix, Tensor (0) | 2022.11.24 |
댓글