[구글 파이썬 교육- 리스트편 번역]
아래의 사이트를 번역한 내용이다.
https://developers.google.com/edu/python/lists#for-and-in
리스트
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']
'파이썬 > 파이썬(python) 초급' 카테고리의 다른 글
[간단명료] 파이썬 장점 (0) | 2022.08.15 |
---|---|
[7-3 파이썬] 키보드 사용팁, 키보드로 한번에 들여쓰기, 들여쓰기 취소하기, 되돌리기, 주석달기 (0) | 2022.08.14 |
[7-1 파이썬] 행맨 hangman 파이썬으로 코딩하기, 순서도 그리기 무료 사이트, 파이썬 예제, 파이썬 실전문제, while 반복문 (0) | 2022.08.14 |
[6-4 파이썬] 순서도 만들기, flowchart, 무료 순서도 만드는 사이트, free flow chart, 순서도 기호, 순서도 영어, 순서도 방법 (0) | 2022.08.14 |
[6-3 파이썬] while, while not, for와 while 비교, 리보그세상예제, 파이썬실전문제, Reeborg's World (0) | 2022.08.13 |