#16-파이썬 기초 실습 - 리스트(List)-5

2020. 1. 27. 10:33AI & BigData/Python Basics

파이썬 기초 실습 - 리스트(List) - 5

1. 리스트의 슬라이싱

리스트의 내장 메서드

  • append. 리스트의 맨 뒤에 데이터를 추가한다. 중간에 원하는 인덱스로 추가하고 싶으면 (객체)[(인덱스):(인덱스)]로 한다.

In [1]:

list_a = ['a', 'b', 'c','d']
list_a.append(5)  # 뒤에 데이터를 추가한다.
list_a  # ['a', 'b', 'c', 'd', 5]. 뒤에 데이터를 추가됐다.

Out[1]:

['a', 'b', 'c', 'd', 5]

In [2]:

list_a.append([4, 3])  # 뒤에 리스트를 추가한다.
list_a

Out[2]:

['a', 'b', 'c', 'd', 5, [4, 3]]

2. index 내가 원하는 값이 어디에 있는지 알려준다.

In [3]:

list_a = ['a', 'b', 'c','d',8]
list_a.index('a')

Out[3]:

0

In [4]:

list_a.index(8)

Out[4]:

4

3. insert. append와 다른 점은 중복된 값은 들어가지는 않는다

  • 최소 2개의 값이어야 한다는 점, int값만 가능하다.

In [5]:

list_c =  ['a', 'b', 'c','d',8]
list_c.insert(2, 6)  # 2번 index 에 6 이란 값을 추가
list_c

Out[5]:

['a', 'b', 6, 'c', 'd', 8]

In [6]:

# 한 개라서 안 들어간다.
list_c.insert(5)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-9db4f59268e4> in <module>
      1 # 한 개라서 안 들어간다.
----> 2 list_c.insert(5)

TypeError: insert() takes exactly 2 arguments (1 given)

In [7]:

list_c.insert([4], [5])  # 리스트 값도 동작을 안하고 에러를 발생한다.
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-2559a59f2127> in <module>
----> 1 list_c.insert([4], [5])  # 리스트 값도 동작을 안하고 에러를 발생한다.

TypeError: 'list' object cannot be interpreted as an integer

In [8]:

list_a = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
list_a.insert('b', 'g')  # int값만 추가 가능하다.
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-f7db79627781> in <module>
      1 list_a = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
----> 2 list_a.insert('b', 'g')  # int값만 추가 가능하다.

TypeError: 'str' object cannot be interpreted as an integer

In [9]:

list_a = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
list_a.insert(2, 'gg')  # int값만 추가 가능하다.
list_a

Out[9]:

['a', 'b', 'gg', 'c', 'd', 'e', 'f', 'g']

4. count. 동일한 데이터가 몇 개 있는지 알려주는 메서드

In [10]:

list_a = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4]
list_a.count(2)  # 1이 한 개 있으므로 1.

Out[10]:

2

In [11]:

list_a.count(4)  # 3이 두 개 있으므로 2.

Out[11]:

5

In [12]:

list_a.count(5)  # 100은 없으므로 0

Out[12]:

0

In [13]:

list_a = ['p', 'y', 't', 'h', 'o', 'n', 'p']
list_a.count('p')  # 문자도 카운트가 가능함 결과는 2 

Out[13]:

2

In [14]:

list_a.count('y')  # 문자도 카운트가 가능함 결과는 1 

Out[14]:

1

5. reverse. 자료의 인덱스를 반전 시켜준다.

In [15]:

e = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
e.reverse()
e  # [0, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Out[15]:

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

6. sort. 리스트 안의 원소들을 크기순 정렬

  • ().sort(reverse=) reverse가 True 내림차순 False면 오름차순. 기본은 F

In [16]:

f = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
f.sort()
f  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Out[16]:

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

In [17]:

f.sort(reverse=True)
f  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Out[17]:

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

7. remove. 지우고 싶은 데이터를 넣으면 삭제

  • 중복된 데이터가 있으면 인덱스가 낮은 것만 삭제 즉, 하나의 데이터만 삭제.

In [18]:

g = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
g.remove(3)  # 지우고 싶은 데이터는 3. 
g  # [1, 2, 4, 5, 6, 7, 8, 9, 0]. 3 하나만 지워졌다.
   # 반복 실행해도 에러는 없다.

Out[18]:

[1, 2, 4, 5, 6, 7, 8, 9, 0]

In [19]:

#인덱스를 이용해 지우고 싶으면 ''del s[(인덱스)]'' 이런 식으로 쓰면 된다.
del g[(1)]
g # 2가 삭제 된것을 확인 할수 있다.

Out[19]:

[1, 4, 5, 6, 7, 8, 9, 0]

8. extend. 리스트를 이용해서 데이터를 추가

  • append와 다른 점은 삽입되는 리스트가 각 요소로 들어간다.

In [20]:

e = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
e.extend([10,11])  # 들어가면 이 리스트가 하나의 인덱스가 아닌 리스트가 분해되어 두 개의 인덱스로 추가가 될 것이다.
e                  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11]. 리스트로 들어간 것이 아닌 요소로 들어간 것을 확인.

Out[20]:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11]

9. pop. 값을 추출하고 Garbage Collection으로 반환한다.

  • 인덱스를 이용하여 원하는 인덱스의 값을 출력하고 반환

In [21]:

f = [1, 2, 3]
f.pop()  # 기본은 인덱스가 가장 높은 값을 출력하고 반환한다. 결과는 3.
f        # [1, 2]. 없어진 것을 확인.

Out[21]:

[1, 2]

In [22]:

f.pop(0)  # 인덱스를 이용하면 원하는 인덱스의 값을 출력 및 반환할 수 있다.
f         # [2]. 없어진 것을 확인

Out[22]:

[2]

10. python 슬라이싱

In [23]:

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

In [24]:

slic_data[1:2]  # 1~ 2사이의 값 1개를 가져온다.

Out[24]:

[2]

In [25]:

slic_data[2:4]  # 2 ~ 4 사의값 3 , 4 를 가져온다.

Out[25]:

[3, 4]

In [26]:

slic_data[:] # 전체 데이터를 가져온다.

Out[26]:

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

In [27]:

slic_data[3:]  # 3부터 끝까지의 데이터를 가져온다.

Out[27]:

[4, 5, 6, 7, 8, 9, 0]

In [28]:

slic_data[:5] # 시작 0부터 5번 안의 값만 가져온다.

Out[28]:

[1, 2, 3, 4, 5]

In [29]:

slic_data[0:9:2] # 시작과 끝을 입력 하고 2 단계 스텝으로 이동함.

Out[29]:

[1, 3, 5, 7, 9]

In [30]:

slic_data[::2] # 시작과 끝까지 2 단계 스텝으로 이동하여 홀수만 가져옴.

Out[30]:

[1, 3, 5, 7, 9]

In [31]:

slic_data[::-1]  # 역순으로 데이터 가져오기

Out[31]:

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

11. 리스트 원소의 슬라이싱

In [32]:

slic_data = ['Python','i','love',10,20,30]

In [33]:

slic_data

Out[33]:

['Python', 'i', 'love', 10, 20, 30]

In [34]:

slic_data[0:2]=[10,20]  # slic_data의 인덱스 번호 0 , 1의 값을 10,20로 변경한다.
slic_data

Out[34]:

[10, 20, 'love', 10, 20, 30]

In [35]:

slic_data[0:3]=['I','love','Python']  # slic_data 인덱스 번호 0,1,2의 값을 변경한다.
slic_data

Out[35]:

['I', 'love', 'Python', 10, 20, 30]

In [36]:

# 인덱스 0 만 지정하고 값을 추가로 넣으면 무조건 다 들어간다. 
# 이 경우 인덱싱 번호 0번에만 입력한 값 1,2,3 이 들어가게 된다.
slic_data[0:1]=[1,2,3]  
slic_data

Out[36]:

[1, 2, 3, 'love', 'Python', 10, 20, 30]

In [37]:

slic_data[0:2] = [0,0,0]  # 이런 경우 [0,1,2]가 [0,0,0]으로 치환된다.
slic_data

Out[37]:

[0, 0, 0, 3, 'love', 'Python', 10, 20, 30]

In [38]:

slic_data[0:3] = [1,2]  # 좌측이 더 작아도 규칙은 동일하게 적용된다. [0,0,0]이 [1,2]로 치환된다.
slic_data

Out[38]:

[1, 2, 3, 'love', 'Python', 10, 20, 30]

In [39]:

slic_data[0:3] = []  # 이건 앞의 [1,2,3]을 []로 치환하는 과정이므로 삭제가 된다.
slic_data

Out[39]:

['love', 'Python', 10, 20, 30]

In [40]:

slic_data[2:5] = []  # 이건 앞의 [1,2,3]을 []로 치환하는 과정이므로 삭제가 된다.
slic_data

Out[40]:

['love', 'Python']

In [ ]: