13. List(리스트)(3) - 리스트 반복, 리스트 관련 메소드
13. List(리스트)(3) - 리스트 반복, 리스트 관련 메소드
## 1. list Repetition(리스트 반복) - `*` 연산자로 리스트를 반복 시킬 수 있습니다. ```python >>> a = [5,3] >>> b = a * 3 …
wikidocs.net
1. list Repetition(리스트 반복)
- * 연산자로 리스트를 반복 시킬 수 있습니다.
>>> a = [5,3]
>>> b = a * 3
>>> a
[5, 3]
>>> b
[5, 3, 5, 3, 5, 3]
- 리스트 반복에서도 얕은복사 문제가 있습니다.
- 관련 포스팅 : https://suwoni-codelab.com/python%20%EA%B8%B0%EB%B3%B8/2018/03/02/Python-Basic-copy/
- a변수의 첫번째 원소에만 값을 추가했는데 3개의 원소 모두 추가됩니다.
- 리스트 반복 시에도 얕은 복사됨을 인지하고 있어야 합니다.
>>> a = [[2,5]] * 3
>>> a
[[2, 5], [2, 5], [2, 5]]
>>> a[0].append(7)
>>> a
[[2, 5, 7], [2, 5, 7], [2, 5, 7]
2. list 관련 메소드 및 연산
- index(item) : 리스트안에서 해당 item의 index번호를 리턴, 없는 경우 ValueError
>>> a = ['서울','인천', '대전','제주도']
>>> a.index('인천')
1
>>> a.index('부산')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: '부산' is not in list
- count(item) : 매칭되는 갯수를 리턴해줌
>>> a = [1, 5, 5, 3, 7, 0, 1, 2]
>>> a.count(5)
2
>>> a.count(13)
0
- in절로 list안에 포함되어 있는지 확인할수 있습니다.
>>> 35 in [1, 35,90,100]
True
>>> 11 in [1, 3, 5,10]
False
>>> 11 not in [1, 3, 5,10]
True
개념 문제
1. 리스트 반복에 대한 설명으로 옳은 것은?
a) 리스트 반복은 리스트의 깊은 복사를 수행한다.
b) 리스트 반복은 원본 리스트의 요소를 변경해도 반복된 리스트에는 영향을 미치지 않는다.
c) 리스트 반복은 얕은 복사를 수행하므로 원본 리스트의 요소를 변경하면 반복된 리스트의 요소도 변경된다.
d) 리스트 반복은 항상 새로운 리스트를 생성하지 않는다.
2. 다음 코드의 출력 결과는 무엇인가?
a = [[2, 5]] * 3
a[0].append(7)
print(a)
a) [[2, 5], [2, 5], [2, 5]]
b) [[2, 5, 7], [2, 5], [2, 5]]
c) [[2, 5, 7], [2, 5, 7], [2, 5]]
d) [[2, 5, 7], [2, 5, 7], [2, 5, 7]]
3. 다음 코드의 출력 결과는 무엇인가?
a = ['서울', '인천', '대전', '제주도']
print(a.index('인천'))
4. 다음 중 리스트 메소드와 그 설명이 올바르게 짝지어진 것은?
a) index(item) - 리스트에서 첫 번째 item의 인덱스를 반환하며, 존재하지 않으면 None을 반환한다.
b) count(item) - 리스트에서 item의 개수를 세어 반환한다.
c) in - 리스트에 item이 포함되어 있으면 True, 그렇지 않으면 False를 반환한다.
d) not in - 리스트에 item이 포함되어 있지 않으면 False, 그렇지 않으면 True를 반환한다.
1. c) 리스트 반복은 얕은 복사를 수행하므로 원본 리스트의 요소를 변경하면 반복된 리스트의 요소도 변경된다.
해설: 리스트 반복은 얕은 복사를 수행하기 때문에, 원본 리스트의 가변 객체 요소를 변경하면 반복된 리스트의 해당 요소들도 변경됩니다.
2. d) [[2, 5, 7], [2, 5, 7], [2, 5, 7]]
해설: 리스트 반복은 얕은 복사를 수행하므로 a[0]을 변경하면 a의 모든 요소가 변경됩니다.
3. b) 1
해설: a 리스트에서 '인천'의 인덱스는 1입니다.
4. b) count(item) - 리스트에서 item의 개수를 세어 반환한다.
c) in - 리스트에 item이 포함되어 있으면 True, 그렇지 않으면 False를 반환한다.
해설: b와 c는 설명이 맞습니다. a는 존재하지 않으면 ValueError를 반환하며, d는 '포함되어 있지 않으면 True, 포함되어 있으면 False'입니다.
코딩 문제
1. 사용자로부터 두 개의 리스트를 입력받아, 첫 번째 리스트를 두 번째 리스트의 길이만큼 반복하여 새로운 리스트를 반환하는 함수를 작성하세요.
# 함수
def repaet_list_by_length:
pass
# 사용자 입력 받기
list1 =
list2 =
# 함수 호출 및 결과 출력
result = repeat_list_by_length(list1, list2)
print("반복된 리스트:", result)
def repeat_list_by_length(list1, list2):
return list1 * len(list2)
# 사용자로부터 두 개의 리스트 입력 받기
list1 = input("첫 번째 리스트를 입력하세요 (예: 1 2 3): ").split()
list1 = [int(i) for i in list1]
list2 = input("두 번째 리스트를 입력하세요 (예: 4 5 6): ").split()
list2 = [int(i) for i in list2]
# 함수 호출 및 결과 출력
result = repeat_list_by_length(list1, list2)
print("반복된 리스트:", result)
2. 주어진 리스트에서 특정 요소의 인덱스를 찾고, 해당 요소의 개수를 세어 출력하는 프로그램을 작성하세요. 만약 리스트에 해당 요소가 없다면, 적절한 메시지를 출력하세요.
# 예시 리스트
example_list = ['서울', '인천', '대전', '제주도', '인천']
# 사용자 입력 받기
item = input("찾고자 하는 요소를 입력하세요: ")
# 함수 호출
find_index_and_count(example_list, item)
def find_index_and_count(lst, item):
count = 0
if item in lst:
index = lst.index(item)
for i in range(len(lst)):
if lst[i] == item:
count += 1
if count == 0:
return f"'{item}'는 리스트에 존재하지 않습니다"
return print(f"'{item}'의 인덱스: {index}"), print(f"'{item}'의 개수: {count}")
# 예시 리스트
example_list = ['서울', '인천', '대전', '제주도', '인천']
# 사용자 입력 받기
item = '인천'
# 함수 호출
find_index_and_count(example_list, item)
def find_index_and_count(lst, item):
try:
index = lst.index(item)
count = lst.count(item)
print(f"요소 '{item}'의 인덱스: {index}")
print(f"요소 '{item}'의 개수: {count}")
except ValueError:
print(f"요소 '{item}'가 리스트에 없습니다.")
# 예시 리스트
example_list = ['서울', '인천', '대전', '제주도', '인천']
# 사용자 입력 받기
item = '인천'
# 함수 호출
find_index_and_count(example_list, item)
3. 사용자로부터 정수 리스트와 특정 정수를 입력받아, 입력받은 정수가 리스트에 포함되어 있지 않으면 "리스트에 포함되어 있지 않습니다."를, 포함되어 있으면 "리스트에 포함되어 있습니다."를 출력하세요. 또한, 입력받은 정수가 리스트에 포함되어 있지 않으면 리스트에 그 정수를 추가하고, 추가된 리스트를 출력하세요.
# 사용자로부터 정수 리스트 입력받기
list_input = input("정수 리스트를 입력하세요 (공백으로 구분): ").split()
int_list = [int(x) for x in list_input]
# 사용자로부터 찾고자 하는 정수 입력받기
search_number = int(input("찾고자 하는 정수를 입력하세요: "))
# 정수가 리스트에 포함되어 있는지 확인
if search_number in int_list:
print("리스트에 포함되어 있습니다.")
else:
print("리스트에 포함되어 있지 않습니다.")
int_list.append(search_number)
print("업데이트된 리스트:", int_list)
'Python > 파이썬 - 기본을 갈고 닦자!' 카테고리의 다른 글
#15. List(리스트)(5) - 리스트 정렬 (0) | 2024.05.27 |
---|---|
#14. List(리스트)(4) - 리스트 원소 추가, 삭제 (0) | 2024.05.26 |
#12. 얕은 복사(shallow copy)와 깊은 복사(deep copy) (0) | 2024.05.21 |
#11. List(리스트)(2) - 리스트 인덱싱, 리스트 슬라이싱 (0) | 2024.05.21 |
#10. List (1) - 리스트란, 리스트 사용 (0) | 2024.05.21 |