IT/언어

[python] 리스트의 요소 추가와 다른 리스트와의 결합

개발자 두더지 2020. 5. 19. 23:39
728x90

 만들어진 리스트에 새로운 요소를 추가하거나, 다ㄴ 리스트와 결합(연결)하는 방법에 대해 설명한다. 요소를 추가하는 것에는 append 메소드나 extend 메소드를 사용한다.

 

1. 리스트에 요소 추가하는 방법

 리스트에 새로운 요소를 추가하는 방법이다. 리스형에 이용 가능한 append메소드를 이용하면 다음과 같다.

list.append(값)

인수로 지정한 값을 가진 요소를 리스트의 마지막에 추가한다. 구체적으로는 다음과 같이 사용할 수 있다.

mylist = ["A", "B", "C"]
mylist.append("D")

print(mylist)
--> ["A", "B", "C", "D"]

 

2. 슬라이드 기능을 사용한 요소 추가하는 방법

 리스트에서는 슬라이드 기능을 통해 시작 인덱스와 마지막 인덱스를 지정하여 리스트의 지정 범위의 요소를 다른 요소와 교체하는 것이 가능하지만, 리스트의 마지막 요소의 다음 위치를 지정하는 것으로 요소를 리스트의 마지막에 추가하는 것이 가능하다. 리스트의 마지막 요소의 인덱스는 내장 함수의 len함수를 사용하여 len(list)-1를 이용하여 얻을 수 있으므로 마지막의 요소의 다음 위치는 len(list)로 지정할 수 있다.

list[lne(list):len(list)] = list등

 등호(=)연산자의 오른쪽에 지정한 'list등'의 원래 list의 마지막에 추가한다.

구체적인 예로 작성하면 아래와 같다.

mylist = ["A", "B", "C"]
mylist[len(mylist):len(mylist)] = ["D", "E"]

print(mylist)
--> ["A", "B", "C", "D", "E"]

 

3. 리스트에 다른 리스트 등의 요소를 추가하는 방법

 리스트에 다른 리스트의 요소를 추가하는 방법으로는 list 자료형에 사용하능한 extend 메소드가 있다.

list.extend(list등)

 인수에 지정한 리스트의 요소를 리스트의 마지막에 추가한다. 리스트뿐만아니라 이터러블 객체도 추가 가능하므로 'list 등'으로 표현하였다. 이터러블  객체로는 문자열, 리스트, 튜플, 사전형 등이 있다.

[Note] 이터레이터 vs 이터러블

iterable (이터러블)
 멤버들을 한 번에 하나씩 돌려줄 수 있는 객체. 이터러블의 예로는 모든 (list, str, tuple 같은) 시퀀스 형들, dict 같은 몇몇 비시퀀스 형들, 파일 객체들, __iter__() 나 시퀀스 개념을 구현하는 __getitem__() 메서드를 써서 정의한 모든 클래스의 객체들이 있다. 이터러블은 for 루프에 사용될 수 있고, 시퀀스를 필요로 하는 다른 많은 곳 (zip(), map(), …) 에 사용될 수 있다. 이터러블 객체가 내장 함수 iter()에 인자로 전달되면, 그 객체의 이터레이터를 돌려준다. 이 이터레이터는 값들의 집합을 한 번 거치는 동안 유효하다. 이터러블을 사용할 때, 보통은 iter()를 호출하거나, 이터레이터 객체를 직접 다룰 필요는 없다. for 문은 이것들을 여러분을 대신해서 자동으로 해주는데, 루프를 도는 동안 이터레이터를 잡아둘 이름 없는 변수를 만든다.

iterator (이터레이터)
 데이터의 스트림을 표현하는 객체. 이터레이터의 __next__() 메서드를 반복적으로 호출하면 (또는 내장 함수 next() 로 전달하면) 스트림에 있는 항목들을 차례대로 돌려준다. 더 이상의 데이터가 없을 때는 대신 StopIteration 예외를 일으킨다. 이 지점에서, 이터레이터 객체는 소진되고, 이후의 모든 __next__() 메서드 호출은 StopIteration 예외를 다시 일으키기만 한다. 이터레이터는 이터레이터 객체 자신을 돌려주는 __iter__() 메서드를 가질 것이 요구되기 때문에, 이터레이터는 이터러블이기도 하고 다른 이터러블들을 받아들이는 대부분의 곳에서 사용될 수 있다. 중요한 예외는 여러 번의 이터레이션을 시도하는 코드다. (list 같은) 컨테이너 객체는 iter() 함수로 전달하거나 for 루프에 사용할 때마다 새 이터레이터를 만든다. 이런 것을 이터레이터에 대해서 수행하려고 하면, 지난 이터레이션에 사용된 이미 소진된 이터레이터를 돌려줘서, 빈 컨테이너처럼 보이게 만든다.

 구체적으로 다음과 같이 작성할 수 있다.

mylist = ["A", "B", "C"]
mylist.extend(["D", "E"])

print(mylist)
--> ["A", "B", "C", "D", "E"]

 참고로, 앞서 설명한 extend메소드가 아닌 append메소드를 인수로 다른 리스트를 지정한 경우, 다른 리스트의 요소가 추가되는 것이 아닌 리스트 자체가 하나의 요소로써 추가된다.

mylist = ["A", "B", "C"]
mylist.append(["D", "E"])

print(mylist)
--> ["A", "B", "C", ["D", "E"]]

 

4. 리스트와 다른 리스트를 결합한 새로운 리스트를 만드는 방법

 리스트에 '+'연산자를 사용하는 것으로 다른 리스트와 결합하여 새로운 리스트를 작성하는 것이 가능하다.

listA + listB

 2개의 리스트의 요소를 가진 새로운 리스트가 작성됐다.

 구체적인 예는 아래와 같다.

list1 = ["A", "B"]
list2 = ["C", "D"]
list3 = list1 + list2
print(list3)
--> ["A", "B", "C", "D"]

 

5. 리스트의 요소를 지정 횟수만큼 반복하여 새로운 리스트를 작성하는 방법

 리스트에 '*'연산자를 사용하면 리스트의 요소를 지정횟수만큼 반복하는 새로운 리스트를 작성할 수 있다.

list * 횟수

 리스트의 요소를 지정한 횟수만큼 반복하여 새로운 리스트를 작성할 수 있다. 예는 아래와 같다.

list = ["A", "B"]
newlist = list * 3 print(newlist)
--> ["A", "B", "A", "B", "A", "B"]

참고자료

https://jiminsun.github.io/2018-05-11/Iteration/

https://www.javadrive.jp/python/list/index6.html

728x90

'IT > 언어' 카테고리의 다른 글

[python] Python의 os 모듈 사용법 정리  (0) 2020.05.21
[python] ArgumentParser(argpaser)의 사용법 간단 정리  (0) 2020.05.20
[python] Iterator와 Generator  (4) 2020.05.13
[python] Pandas란  (0) 2020.04.20
[python] scikit-learn이란  (0) 2020.04.20