본문으로 바로가기

파이썬 리스트 사용하기 list

category Language/Python 2020. 7. 9. 11:14
728x90

리스트 선언하기

colors = ['red', 'yellow', 'green', 'blue']
for color in colors: 
    print(color)

for i, color in enumerate(colors):
    print(i, color)
더보기
red
yellow
green
blue
0 red
1 yellow
2 green
3 blue

 

컴프리헨션 문법으로 표현.

numbers = [1,2,3,4,5,6,7,8,9,10]
new_numbers = [n for n in numbers if n%2 == 0]
print(new_numbers)
더보기
[2, 4, 6, 8, 10]

 

추가, 삽입, 확장

추가할 때는 append() 를 사용합니다.

colors = ['red', 'yellow', 'green', 'blue']
new_colors = ['blue', 'black']
for c in new_colors:
    if c not in colors:
        colors.append(c)
print(colors)
더보기
['red', 'yellow', 'green', 'blue', 'black']

 

원하는 인덱스에 삽입할 때는 insert() 를 사용합니다.

index() 를 사용하면 해당 원소가 위치한 인덱스를 반환합니다.

colors = ['red', 'yellow', 'green', 'pink']
new_colors = ['blue', 'black']
for c in new_colors:
    if c == 'blue' and 'green' in colors:
        idx = colors.index('green')
        colors.insert(idx+1, c)
print(colors)
더보기
['red', 'yellow', 'green', 'blue', 'pink']

 

원소가 없을 경우는 다음 에러를 발생.

>>> colors = ['red', 'yellow', 'green', 'pink']
>>> colors.index('red')
0
>>> colors.index('black')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'black' is not in list

 

확장할 때는 extend() 를 사용합니다.

>>> numbers = [1,2,3,4,5]
>>> numbers2 = [1,10,11,12]
>>> numbers
[1, 2, 3, 4, 5]
>>> numbers.extend(numbers2)
>>> numbers
[1, 2, 3, 4, 5, 1, 10, 11, 12]

 

1이 중복으로 들어가 있습니다. count() 로 해당 원소의 개수를 구할 수 있습니다.

또한 set() 함수를 이용해서 중복을 제거할 수 있습니다.

>>> numbers
[1, 2, 3, 4, 5, 1, 10, 11, 12]
>>>
>>> numbers.count(1)
2
>>>
>>> new_numbers = list(set(numbers))
>>> new_numbers
[1, 2, 3, 4, 5, 10, 11, 12]

 

연산자를 이용하여 다음과 같이 사용할 수도 있습니다.

>>> nums = [1,2,3]
>>> nums2 = [10,11,12]
>>> nums + nums2
[1, 2, 3, 10, 11, 12]
>>>
>>> nums * 2
[1, 2, 3, 1, 2, 3]
>>>
>>> nums + 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list

 

제거, 추출, 초기화

제거할 때는 remove() 혹은 del 을 사용합니다.

colors = ['red', 'yellow', 'green', 'blue']
for color in colors:
    if color == 'red':
        colors.remove('red')
print(colors)

colors = ['red', 'yellow', 'green', 'blue']
for i, color in enumerate(colors):
    if color == 'green':
        del colors[i]
print(colors)
더보기
['red', 'yellow', 'blue']
['red', 'yellow', 'blue']

 

다음과 같이 반복문을 돌면서 해당 리스트의 원소를 삭제하고 싶은 경우가 있습니다.

#1, #2, #3 비교.

#1
colors = ['red', 'yellow', 'green', 'blue']
for color in colors:
    if color == 'blue' or color == 'green':
        colors.remove(color)
print(colors)

print('#'*50)

#2
colors = ['red', 'yellow', 'green', 'blue']
tmp = colors
for color in colors:
    if color == 'blue' or color == 'green':
        tmp.remove(color)
print(colors)
print(tmp)

print('#'*50)

#3
colors = ['red', 'yellow', 'green', 'blue']
tmp = colors.copy()
for color in colors:
    if color == 'blue' or color == 'green':
        tmp.remove(color)
print(colors)
print(tmp)
더보기
['red', 'yellow', 'blue']
##################################################
['red', 'yellow', 'blue']
['red', 'yellow', 'blue']
##################################################
['red', 'yellow', 'green', 'blue']
['red', 'yellow']

 

원소를 추출하고 싶은 경우에는 pop() 을 사용합니다.

import random

colors = ['red', 'yellow', 'green', 'blue']
for _ in range(2):
    choice = random.choice(colors)
    idx = colors.index(choice)
    colors.pop(idx)
print(colors)
더보기
['red', 'yellow']

 

초기화는 clear() 를 사용합니다.

>>> arr = [1,2,3,4,5]
>>>
>>> arr
[1, 2, 3, 4, 5]
>>>
>>> arr.clear()
>>>
>>> arr
[]