파이썬

리스트 (list)

PGNV 2021. 5. 7. 11:06

 

 

파이썬 자료구조 라이브러리

라이브러리 기능 특징
list 여러 개 요소 연속 저장 요소 추가, 변경, 삭제 가능
tuple 여러 개 요소 연속 저장 요소 추가, 변경, 삭제 불가능
dictionary key:value 쌍의 자료 저장 요소 추가, 변경, 삭제, 검색 가능

 

 

 

 

 

리스트 (Comprehensions)

리스트(list)는 배열이라고도 부르며 이미 문자열에서 비슷하게 다뤄본 자료형입니다.

0부터 시작하는 인덱스로 접근할 수 있으며, 각 인덱스에는 원하는 자료를 담을 수 있습니다.

그리고 담긴 자료는 원소(element) 라고 흔히 부릅니다.

선언 방법은 두 가지가 있습니다.

  • [] : 괄호를 사용한 방법
  • list() : 직접 명시하는 방법
list 선언 예 특징
scores1 = [90, 85, 90, 100, 95 여러개 정수 저장
순서는 상관없음, 같은 수 중복 가능
요소 추가, 변경, 삭제 가능
scores2 = list([90, 85, 80, 100, 95]) 다음과 같이 선언하는 것도 가능
numbers = [1, 2, 3, ... , 99, 100] 정렬된 상태로 저장하는 것도 가능

 

 

 

 

 

 

empty_list = []


print(empty_list)
num_list = [1, 2, 3, 4, 5, 6]
list1 = [1, 2, 3, 'Python', 'C++', 'JavaScript']

print(num_list)
print(list1)

'''
출력
[]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 'Python', 'C++', 'JavaScript']
'''

list1의 형태

print(list1)
#출력 :[1, 2, 3, 'Python', 'C++', 'JavaScript']

 

 

 

 

 

 

 

print(list1[5])
print(list1[-1])
'''
출력
JavaScript
JavaScript
'''

 

 

 

 

 

 

 6번째 인덱스에 있는 문자열의 JavaScript에서 Java를 가져오기

print(list1[5])
#출력 : JavaScript
print(list1[5][:4])
#출력: Java
print(list1[5][:2])
#출력: Ja
print(list1[5][:-2])
#출력: JavaScri

 

 

 

 

 

list 수정해보기

a = [1, 2, 3, 4, 5]
print(a)
#출력:  [1, 2, 3, 4, 5]
a[0] = 'Hi'
print(a)
#출력: ['Hi', 2, 3, 4, 5]

 

 

 

 

 

추가

  • append : 마지막 원소 하나 추가
  • insert : 원하는 위치에 원소 하나 추가
  • extend : 마지막에 원하는 원소들 추가
  • + : 마지막에 원하는 원소들 추가(연결)

 

a_list = [1, 2, 3]

 

 

 

 

 

 

append 는 리스트의 마지막에 원소를 하나 추가하는 메서드입니다.

append를 사용하면 기존의 리스트 내용도 변하게 됩니다.

a_list.append(5)
#[1, 2, 3, 5]
a_list.append(6)
#[1, 2, 3, 5, 6]
a_list.append(9)
#[1, 2, 3, 5, 6, 9]
a_list.append(10)
#[1, 2, 3, 5, 6, 9, 10]
print(a_list)
#출력: [1, 2, 3, 5, 6, 9, 10]

 

 

 

 

insert 는 원하는 위치에 원소를 삽입하는 메서드입니다.

b_list = [0, 1, 2]
print(b_list)
#출력: [0, 1, 2]
b_list.insert(2, '끼워넣기')
print(b_list)
#출력: [0, 1, '끼워넣기', 2]

 

 

 

extend는 마지막 위치에 원소를 확장하는 방법입니다.

그래서 리스트에 다른 리스트를 추가할 때 다음과 같이 사용할 수 있습니다.

c_list = [0, 1, 2]
print(c_list)
#출력: [0, 1, 2]
c_list.extend(['add1', 'add2'])
print(c_list)
#출력: [0, 1, 2, 'add1', 'add2']

그래서 append로 리스트를 추가하면 다음과 같습니다.

리스트 안에 리스트가 있는 모양이 됩니다.

print(c_list)
#출력: [0, 1, 2, 'add1', 'add2']
c_list.append(['add3', 'add4'])
print(c_list)
#출력: [0, 1, 2, 'add1', 'add2', ['add3', 'add4']]
print(c_list[-1])
#출력: ['add3', 'add4']

 

그리고 리스트 간의 연결(concatenate)는 + 연산, += 연산, *연산도 가능합니다.

 

d = [1, 2, 3] + [4, 5, 6]
print(d)
#출력: [1, 2, 3, 4, 5, 6]
e = [1, 2, 3]
print(e)
#출력: [1, 2, 3]
e += [4, 5]
print(e)
#출력: [1, 2, 3, 4, 5]

f = [1, 2, 3] *4
print(f)
#출력: [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

 

 

 

 

 

 

삭제

이런 여러 자료를 담을 수 있는 자료형에는 자료의 삭제도 필수적입니다.

삭제는 총 2가지 방법을 살펴보겠습니다.

  • remove
  • pop

 

 

 

 

remove는 지정된 특정 원소를 제거할 수 있습니다.

 

eat = ['치킨', '피자', '떡볶이', '삼겹살', '라면']
print(eat)
#출력: ['치킨', '피자', '떡볶이', '삼겹살', '라면']
eat.remove('피자')
print(eat)
#출력: ['치킨', '떡볶이', '삼겹살', '라면']

 

 

 

pop은 2가지 사용법으로 기억하면 좋습니다.

  • pop() : 마지막 원소를 pop
  • pop(idx) : idx 위치의 원소를 pop

 

a1 = [0, 1, 2, 3, 4, 5, 6]
x = list1.pop()
print(list1)
#출력: [0, 1, 2, 3, 4, 5]

print(x)
#출력: 6

a2= [0, 1, 2, 3, 4, 5, 6]
list1.pop(2)
print(list1)
#출력: [0, 1, 3, 4, 5, 6]

 

 

리스트 메서드

위에서 사용한 메서드들 외에도 다음과 같은 유용한 메서드가 있습니다.

  • count() : 개수를 세기
  • reverse() : 역순
  • sort() : 정렬

 

 

 

 

 

count() : 개수를 세기

animal = ['곰', '곰', '곰', '개', '개', '곰', '개']
print(animal.count('개'))
#출력: 3

from collections import Counter
Counter(animal)
#출력: Counter({'개': 3, '곰': 4})

 

 

 

 

reverse() : 역순

number = [1, 2, 3, 4, 5, 6, 7]
number.reverse()
print(number)
#출력: [7, 6, 5, 4, 3, 2, 1]

 

 

 

 

 

 

sort() : 정렬

number.sort()
print(number)
#출력: [1, 2, 3, 4, 5, 6, 7]

strings = ['banana', 'cat', 'dog', 'apple']
strings.sort() # 방법 1 : 기존 리스트 변경
print(strings)
#출력: ['apple', 'banana', 'cat', 'dog']

sorted(strings) # 방법 2 : 새로운 리스트 생성
#출력: ['apple', 'banana', 'cat', 'dog']

 

 

 

 

 

 

 

 

 

 

xs = [3, 1, 2]   # 리스트 생성
print (xs, xs[2])  # 출력 "[3, 1, 2] 2"
print (xs[-1])    # 인덱스가 음수일 경우 리스트의 끝에서부터 세어짐; 출력 "2"
xs[2] = 'foo'    # 리스트는 자료형이 다른 요소들을 저장할 수 있습니다
print (xs)        # 출력 "[3, 1, 'foo']"

xs.append('bar') # 리스트의 끝에 새 요소 추가

print (xs)        # 출력 "[3, 1, 'foo', 'bar']"

x = xs.pop()   #리스트의 마지막 요소 삭제하고 반환

print (x, xs)      # 출력 "bar[3, 1, 'foo']"

 

 

-기본-

nums = [0, 1, 2, 3, 4]

squares = [x ** 2 for x in nums]

print (squares)   # 출력 [0, 1, 4, 9, 16]



-조건문-

nums = [0, 1, 2, 3, 4]

even_squares = [x ** 2 for x in nums if x % 2 == 0]

print (even_squares)  # 출력 "[0, 4, 16]"





-반복문-

nums = [0, 1, 2, 3, 4] # nums = list(range(5))
squares = []
for x in nums:

    squares.append(x**2)

print(squares) #출력 [0, 1, 4, 9, 16]

 

 

 

 

 

반복문

animals = ['cat', 'dog', 'monkey']
for animal in animals:
    print (animal)
# 출력 "cat", "dog", "monkey", 한 줄에 하나씩 출력.

 

반복문 내에서 리스트 각 요소의 인덱스에 접근하고 싶다면, ‘enumerate’ 함수를 사용

animals = ['cat', 'dog', 'monkey']
for idx, animal in enumerate(animals):
    print ('#%d: %s' % (idx + 1, animal))
# 출력 "#1: cat", "#2: dog", "#3: monkey", 한 줄에 하나씩 출력.

 

 

 

조건문

x = 15

if x == 1: #첫번 째 조건문

    print('10입니다') #들여쓰기 필수 

elif x == 15: #또 다른 조건문

    print('15입니다')

else: #위에 조건 해당 안될때 출력

    print('응 아니야')

 

'파이썬' 카테고리의 다른 글

집합(Set)  (0) 2021.05.07
튜플 (Tuple)  (0) 2021.05.07
딕셔너리(dictionary)  (0) 2021.05.07
슬라이싱 (Slicing)  (0) 2021.05.07
문자열(String) : 문자와 문장  (0) 2021.05.07