파이썬/파이썬(python) 초급

[7-2 파이썬] 구글 파이썬 교육, 리스트 번역, value in list, range, while, 리스트메소드, method, list error, slice, 구글 파이썬 교육

Olivia-BlackCherry 2022. 8. 14. 09:56

[구글 파이썬 교육- 리스트편 번역]

아래의 사이트를 번역한 내용이다.

https://developers.google.com/edu/python/lists#for-and-in

 

Python Lists  |  Python Education  |  Google Developers

Python Lists Python has a great built-in list type named "list". List literals are written within square brackets [ ]. Lists work similarly to strings -- use the len() function and square brackets [ ] to access data, with the first element at index 0. (See

developers.google.com

 

리스트

Python에는 "list"라는 훌륭한 내장 목록 유형이 있다. 

리스트는 대괄호 [ ] 안에 작성된다.

리스트는 문자열과 유사하게 작동한다.

len() 함수와 대괄호 [ ]를 사용하여 데이터에 접근한다.

0부터 시작한다.

 

colors는 red, blue, green이라는 요소를 가지고 있는 리스트이다.

  colors = ['red', 'blue', 'green']
  print(colors[0])    ## red
  print(colors[2])    ## green
  print(len(colors))  ## 3

 

b라는 변수에 colors를 할당한다고 해서,

colors 리스트의 복사본이 만들어지는 것이 아니라

두 개의 변수가 각각 독립적으로 리스트를 갖는다. 

 
  b = colors   ## Does not copy the list

[ ]

은 "빈 목록"이며 대괄호 [ ] 쌍으로 표현한다.

 

 

'+'

는 두 개의 목록을 추가하기 위해 작동하므로

[1, 2] + [3, 4]는 [1, 2, 3, 4]를 생성합니다(문자열에서 +을 해주는 원리와 같다).

 

 

for var in list

*for* ~ *in*는 우리가 처음으로 보게 되는 구조이다.

매우 유용하고 리스트와 함께 사용된다. 

 

for var in list는 리스트(또는 다른 컬렉션)의 각 요소에 접근해서,

각 요소를 하나하나 쉽게 볼 수 있는 방법이다. 

 

for문이 반복하는 동안에는 리스트 안의 요소를 추가하거나 제거하지 않는다.

 
  squares = [1, 4, 9, 16]
  sum = 0
  for num in squares:
    sum += num
  print(sum)  ## 30

 

var= variable 변수

만약 리스트 안의 요소들이 어떤 종류의 항목인지 알고 있다면,

var를 설정할 때  "num", "name" 또는 "url"과 같이 정보가 있는 변수를 사용하는 것이 좋다.

현재 진행 중인 상황과 정보를 알 수 있기 때문이다.

 

변수이기 때문에 이름은 변경 가능하다.

 

 

value  in  list

해당 값이 리스트 안에 속해있는지 확인하는 방법으로 in을 쓴다.

해당 값이 리스트 안에 있으면 True,

아니면 False를 반환한다.

  list = ['larry', 'curly', 'moe']
  if 'curly' in list:
    print('yay')

 

for/in 구문은 Python 코드에서 매우 일반적으로 사용되며 

리스트 이외의 데이터 유형에서도 작동하므로 해당 구문을 외워야 한다.

다른 프로그래밍 언어를 배울 때 반복문을 다르게 썼을지 몰라도, Python에서는 for/in만 사용해야 한다.

 

예를 들어,

for/in을 사용하여 문자열에서 작업할 수도 있다. 

문자열은 문자들이 모여 있는 리스트와 같다.

즉, apple은 a, p, p, l, e 라는 알파벳이 모여 있는 리스트라고 생각할 수 있다.

for ch in s:
    print(ch)

 

Range()

range(n) 함수는 숫자 0, 1, ... n-1을 생성하고 range(a, b)는 a, a+1, ... b-1을 반환한다.

마지막 숫자는 포함하지 않는다.

 

 for 루프와 range() 함수의 조합을 통해 숫자 for 루프를 만들 수 있습니다.

 
  ## print the numbers from 0 through 99
  for i in range(100):
    print(i)

 

 

 

while

위의 for/in 루프는 리스트 안의 모든 요소를 반복하여 문제를 해결하지만

while 반복문은 조건이 참인 경우 동안 실행되며, 특정 인덱스에 접근하는 것에 대해 조절이 가능하다.

 

다음은 목록의 모든 특정 요소에 액세스하는 while 루프이다.

 
  ## Access every 3rd element in a list
  i = 0
  while i < len(a):
    print(a[i])
    i = i + 3

 

 

리스트 메소드

  • list.append(elem) -- 목록 끝에 단일 요소를 추가합니다. 일반적인 오류: 새 목록을 반환하지 않고 원본만 수정합니다.
  • list.insert(index, elem) -- 주어진 인덱스에 요소를 삽입하고 요소를 오른쪽으로 이동합니다.
  • list.extend(list2)는 list2의 요소를 목록 끝에 추가합니다. 목록에서 + 또는 +=를 사용하는 것은 extend()를 사용하는 것과 유사합니다.
  • list.index(elem) -- 목록의 시작 부분에서 주어진 요소를 검색하고 인덱스를 반환합니다. 요소가 나타나지 않으면 ValueError가 발생합니다(ValueError 없이 확인하려면 "in"을 사용).
  • list.remove(elem) -- 주어진 요소의 첫 번째 인스턴스를 검색하고 제거합니다(존재하지 않으면 ValueError 던짐).
  • list.sort() -- 목록을 제자리에 정렬합니다(반환하지 않음). (나중에 보여지는 sorted() 함수가 선호됩니다.)
  • list.reverse() -- 목록을 제자리에서 뒤집습니다(반환하지 않음).
  • list.pop(index) -- 주어진 인덱스에서 요소를 제거하고 반환합니다. index가 생략되면 가장 오른쪽 요소를 반환합니다(대략적으로 append()의 반대).

위는 리스트의 메소드이며, 리스트에서만 사용할 수 있다.

반면, len()함수는 리스트, 문자열 등 많은 곳에서 쓰이는 함수이다.

 
  list = ['larry', 'curly', 'moe']
  list.append('shemp')         ## append elem at end
  list.insert(0, 'xxx')        ## insert elem at index 0
  list.extend(['yyy', 'zzz'])  ## add list of elems at end
  print(list)  ## ['xxx', 'larry', 'curly', 'moe', 'shemp', 'yyy', 'zzz']
  print(list.index('curly'))    ## 2

  list.remove('curly')         ## search and remove that element
  list.pop(1)                  ## removes and returns 'larry'
  print(list)  ## ['xxx', 'moe', 'shemp', 'yyy', 'zzz']

 

 

자주 실수하는 부분이다.

리스트에 메소드가 적용된 자체를 반환할 수 없다.

리스트만 반환해야 한다.

  list = [1, 2, 3]
  print(list.append(4))   ## NO, does not work, append() returns None
  ## Correct pattern:
  list.append(4)
  print(list)  ## [1, 2, 3, 4]

 

 

리스트 요소 추가하기

한 가지 일반적인 패턴은 목록을 빈 목록 [ ]으로 시작한 다음

append() 또는 extend()를 사용하여 요소를 추한다.

 
  list = []          ## Start as the empty list
  list.append('a')   ## Use append() to add elements
  list.append('b')

 

 

슬라이스

리스트의 일부만 가져올 때 

슬라이스 기능을 이용한다. 

[ ] 대괄호와 index 개념을 이용한다. 

 
  list = ['a', 'b', 'c', 'd']
  print(list[1:-1])   ## ['b', 'c']
  list[0:2] = 'z'    ## replace ['a', 'b'] with ['z']
  print(list)         ## ['z', 'c', 'd']