python basic : list

Purple·2021년 12월 6일
0

리스트이 index

  • 0부터 카운트 한다.
  • 0번째, 1번째, 2번째 ...

리스트 초기화

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a)

# 3번째 원소만 출력
print(a[3])

# 크기가 N이고, 모든 값이 0인 1차원 리스트 초기화
n = 10
a = [0] * n
print(a)

  • 선언과 동시에 초기화가 가능하다
  • *곱하기 연산을 사용하여 리스트 초기화가 가능하다.

리스트 인덱싱

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 7번째 원소만 출력
print(a[7])

# 뒤에서 1번째 원소 출력
print(a[-1])

# 뒤에서 3번째 원소 출력
print(a[-3])

# 3번째 원소 값 변경
a[3] = 7
print(a)

  • 인덱스를 통해 리스트 원소에 접근이 가능하다.
  • a[-1] : 뒤에서 1번재 원소를 출력
  • a[-3] : 뒤에서 3번째 원소를 출력

리스트 슬라이싱

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 3번째 원소만 출력
print(a[3])

# 1번째 원소부터 4번째 원소 전까지 출력
print(a[1:4])

  • a[1:4] : 1번째 원소부터 4-1 = 3 번째 원소까지를 의미한다.

리스트 컴프리헨션

# 0부터 9까지 수를 포함하는 리스트
# 반복문 먼저 작성하고, 할당할 변수에 대해서 생각하기
array = [i for i in range(10)] 
print(array)

# 0부터 19까지의 수 중에서, 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
print(array)

# 1부터 9까지의 수들의 제곱 값을 포함하는 리스트
array = [i ** 2 for i in range(1, 10)]
print(array)

  • 리스트 컴프리헨션 : 리스트 안에 식, for문, if문 등으로 작성하여, 리스트를 생성하는 것을 말한다.

리스트 컴프리헨션과 일반적인 코드 비교

# 리스트 컴프리헨션
# 0부터 19까지 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
print(array)

# 일반적인 코드
array = []
for i in range(20):
	if i % 2 == 1:
		array.append(i)
print(array)

  • 리스트 컴프리헨션의 코드가 훨씬 간결하다.

2차원 리스트 초기화 by 리스트 컴프리헨션

# 좋은 예시: N*M 크기의 2차원 리스트 초기화
n = 4
m = 3
array = [[0] * m for _ in range(n)]
print(array)

array[1][1] = 5
print(array)

# 잘못된 예시: N*M 크기의 2차원 리스트 초기화
n = 4
m = 3
array = [[0] * m] * n
print(array)
array[1][1] = 5
print(array)

  • 좋은 예시: [[0] * m for _ in range(n)]
  • 나쁜 예시: [[0] * m] * n
  • 나쁜 예시의 경우, 열의 주소값이 다 같아지므로, 우리가 일반적으로 원하는 2차원배열이 생성되지 않는다.

언더바의 관용적 사용예

# 1부터 9까지의 자연수를 더하기
sum = 0
for i in range(10):
	sum += i
print(sum)
# "Hello World!"를 5번 출력하기
for _ in range(5):
	print("Hello World!")

  • 반복하는 횟수 자체가 for문안에서의 사용이 필요가 없는, 단순반복문을 작성할 때 언더바를 사용한다.

리스트 관련 기타 메소드

a = [1, 4, 3]
print(a)

# 리스트.sort(), 
a.sort()
print(a)

# 리스트.sort(reverse = True)
a.sort(reverse = True)
print(a)

# 리스트.reverse()
a.reverse()
print(a)

# 리스트.append(원소)
a.append(2)
print(a)

# 리스트.insert(삽입할 위치 인덱스, 삽입할 값)
a.insert(2, 3)
print(a)

# 리스트.remove(특정 값), 특정값이 여러개면 하나만 제거
a.remove(1)
print(a)

# del 리스트[]
del a[1]
print(a)

# 리스트.pop(인덱스)
pop_num = a.pop(0)
print(a)
print(pop_num)

# 리스트.clear()
a.clear()
print(a)

# 리스트.count(특정 값)
print(a.count(3))

  • a.sort() : 오름차순 정렬
  • a.sort(reverse = true) : 내림차순 정렬
  • a.reverse() : 역순으로 바꿔준다.
  • a.append(1) : 리스트 a에 원소 1을 추가한다.
  • a.insert(2, 3) : 리스트 a의 index 2번째 자리에, 원소 3을 삽입한다.
  • a.remove(1) : 리스트 a의 원소중에서, 1에 해당하면 제거한다. 여러개라면 오름차순으로 진행순서로 제일 먼저 발견된 것만 제거한다.
  • del a[1] : 리스트 a의 1번째 원소를 제거한다.
  • a.pop(0) : 리시트 a의 0번째 원소를 제거하면서, 해당 원소를 반환한다.
  • a.clear() : 리스트를 빈 리스트로 만든다.

set자료형과 in, not in 메소드 and 리스트

a = [1, 2, 3, 4, 5, 5, 5]
print(a)

# 집합 자료형
remove_set = {3, 5} 

result = [i for i in a if i not in remove_set]
print(result)

  • 리스트에서 특정 값을 가지는 원소를 모두 제거할때 유용하다.

리스트를 문자열로 변환하여 출력

list_ex = ['a', 'b', 'c', 'd', 'e', 'f']
print(', '.join(list_ex))
print(''.join(list_ex))

  • join을 사용하면, 각 리스트원소들 사이에 문자열을 조합시켜서 출력이 가능하다.

profile
안녕하세요.

0개의 댓글