[Python Basic] 자료형 list 타입
순서가 있고, 중복이 허용되는 배열 형태의 자료형 입니다.
list vs tuple vs dictionary vs set
list | tuple | dictionary | set | |
---|---|---|---|---|
순서 | O | O | X | X |
중복 | O | O | X | X |
변경 | O | X | O | O |
형태 | [1,2,3,4,5] | (1,2,3,4,5) | {“java”:10, “key”:5} | {1, 2, 3} |
type | <class ‘list’> | <class ‘tuple’> | <class ‘dict’> | <class ‘set’> |
형태 [값, 값, .... 값, 값]
의 배열 형태의 자료형
예)
a = [1, 3, 5, 7, 10]
a = ['A', 'B', 'C', 'C', 'D']
a = ['A', 1, 2, True, False, 'D']
기본 사용법
연산
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
c = a+b # a+b를 더한 후 a, b는 변화 없음
d = a*3
print(c) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(d) # [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
print(a[0]) # 1
print(a[-1])# 5
print(len(d))# 15
a.extend(b) # extend는 원본에 추가되는 형태
print(a) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
슬라이싱
a = [1, 3, 5, 7, 10] #[이상:미만]
x = a[1:3] # [3, 5]
x = a[:2] # [1, 3]
x = a[3:] # [7, 10]
x = a[:] # 전체
x = a[:-1]
print(x) # [1, 3, 5, 7]
# [이상:미만:스탭단계]
x = a[::2] # [1, 3, 5]
print(x)
x = a[::-1] # [10, 7, 5, 3, 1] Reverse
print(x)
추가, 삭제
리스트 추가에는 append
, insert
를 사용 가능합니다.
삭제는 del
, remove
,pop
등으로 삭제 가능 합니다.
b = ["AB", 10, False]
b.append(50.5) # 추가 ['AB', 10, False, 50.5]
b[1] = 11 # 변경 ['AB', 11, False, 50.5]
del b[2] # 삭제 ['AB', 11, 50.5]
print(b) # ['AB', 11, 50.5]
b.insert(0,'KK')
print(b) # ['KK','AB', 11, 50.5]
a.pop() # pop(인덱스 = -1) 기본값 -1로 마지막 값을 제거함
a.remove(50.5) # remove(값) , 요소를 값으로 판단하어 제거함
a.clear() # 모두 초기화
전개 연산자
*
를 붙여서 내부에 매개변수 위치에 사용하는 방식.
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
c = [*a, *b]
print(c) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
split
mylist = "Today the weather is very clear.".split()
print(mylist) # ['Today', 'the', 'weather', 'is', 'very', 'clear.']
i = mylist.index('weather') # i = 2
n = mylist.count('very') # n = 1
print(i, n) # 2 1
[표현식 for 요소 in 컬렉션 [if 조건식]]
list1 = [n ** 2 for n in range(10) if n % 3 == 0]
print(list1) # [0, 9, 36, 81]
list2 = [n for n in range(10) if n % 3 == 0]
print(list2) # [0, 3, 6, 9]
배열 초기화
len = 10
arr = [0] * len
print(arr) #[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
len = 10
arr = [1] * len
print(arr) #[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
배열 순회
arr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(len(arr)):
arr[i] = i * 2
print(arr) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
arr = [i * 2 for i in range(10)]
print(arr) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
str = 'ABCDE'
print([c * 3 for c in str]) #['AAA', 'BBB', 'CCC', 'DDD', 'EEE']
arr = ['A','B','C']
for i, v in enumerate(arr):
print("{}번째 {} 값".format(i, v))
# 출력
0번째 A 값
1번째 B 값
2번째 C 값
배열 재선언
# 1~10까지 중 2로 나눈 나머지 0인 아이템만 arr로 재선언
size = 10
arr = [n for n in range(1, 11) if n % 2 == 0]
print(arr) # [2, 4, 6, 8, 10]
# 1부터 30 까지 2의 배수 AND 3의 배수 , 조건은 모두 AND로 이어짐.
arr = [n for n in range(1, 31) if n % 2 == 0 if n % 3 == 0]
print(arr) # [6, 12, 18, 24, 30]
# arr = [n for n in range(1, 31) if n % 2 == 0 and if n % 3 == 0]
# SyntaxError: invalid syntax And를 직접 넣는 것은 허용이 되지 않음
# 1부터 30 까지 2의 배수 OR 3의 배수
arr = [n for n in range(1, 16) if n % 2 == 0 or n % 3 == 0]
# 한 if 문 내에서 or 연산 해결
print(arr) # [2, 3, 4, 6, 8, 9, 10, 12, 14, 15
2중 배열
arr = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12],
]
print(len(arr)) # 4 행
print(len(arr[0])) # 3 열
# 1차원 배열로 변환
arr1 = [n for row in arr for n in row]
print(arr1) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
arr2 = []
for row in arr:
for n in row:
arr2.append(n)
print(arr2) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
집계 함수
sum, min, max
arr = [1, 2, 3, 4, 5]
print(sum(arr)) # 15
print(min(arr)) # 1
print(max(arr)) # 5
정렬
a = [1,2,6,3,2,6,8,9]
print(a) # [1, 2, 6, 3, 2, 6, 8, 9]
a.sort()
print(a) # [1, 2, 2, 3, 6, 6, 8, 9]
a.sort(reverse = True)
print(a) # [9, 8, 6, 6, 3, 2, 2, 1]
b = reversed(a)
print(a) # [9, 8, 6, 6, 3, 2, 2, 1]
list - set 변환(중복 제거)
a = [1,2,6,3,2,6,8,9]
s = set(a) #set으로 변경함
print(type(s)) # <class 'set'>
print(s) # {1, 2, 3, 6, 8, 9}
a2 = list(s)
print(type(a2)) # <class 'list'>
print(a2) # [1, 2, 3, 6, 8, 9]
list to string
a = [1,2,6,3,2,6,8,9]
str = ''.join(str(e) for e in a)
print(str) # 12632689