데이터분석/python

#6. 리스트 함수 활용

dataminutestone 2025. 10. 27. 16:54

조건)

 

 

  1. numbers라는 빈 리스트를 만들고 리스트를 출력한다.
  2. append를 이용해서 numbers에 1, 7, 3, 6, 5, 2, 13, 14를 순서대로 추가한다. 그 후 리스트를 출력한다.
  3. numbers 리스트의 원소들 중 홀수는 모두 제거한다. 그 후 다시 리스트를 출력한다.
  4. numbers 리스트의 인덱스 0 자리에 20이라는 수를 삽입한 후 출력한다.
  5. numbers 리스트를 정렬한 후 출력한다.

피드백)

 

1. append 함수는 numbers.append(1) 이렇게 []사용 안하고 직접 인덱스 수치 입력

 

i = 0
while i < len(numbers):
    if numbers[i] % 2 == 1:
    del.numbers[i]
    i += 1

 

2. 위와 같이 작성한 코드는 두 가지 요소가 틀렸다.

    2-1. if문 다음에 수행문은 들여쓰기 해야함.

    2-2. del문은 .을 찍지 않는다..

 

# 빈 리스트 만들기
numbers = []
print(numbers)

# numbers에 값들 추가
numbers.append(1)
numbers.append(7)
numbers.append(3)
numbers.append(6)
numbers.append(5)
numbers.append(2)
numbers.append(13)
numbers.append(14)
print(numbers)

# numbers에서 홀수 제거
i = 0
while i < len(numbers):
    if numbers[i] % 2 == 1:
        del numbers[i]
    i += 1
    
print(numbers)

# numbers의 인덱스 0 자리에 20이라는 값 삽입
numbers.insert(0,20)
print(numbers)

# numbers를 정렬해서 출력
numbers = sorted(numbers)
print(numbers)

 

결과에 없어야 할 7이 추가되어 있음...

그렇다면 리스트에서 1번 인덱스값이 들어가 있는 것인데 왜지?

 

챗지피티 찬스 사용..

 

list 값이 del되면 인덱스가 달라지기 때문에 연속된 홀수값이 삭제되지 않는 것이었다..!!

예를들어 달리기 2등하는 사람을 제치면 몇 등이 되는가? 라는 넌센스 퀴즈가 있는데, 

이때 '1등이겠지' 라고 생각하는 것과 유사한 논리 오류가 내 머릿속에서 발생한 것.

 

아무튼 리스트 인덱스 값은 2등처럼 삭제되면 빈자리를 다음 인덱스 값이 채우기 때문이다..!

 

# 빈 리스트 만들기
numbers = []
print(numbers)

# numbers에 값들 추가
numbers.append(1)
numbers.append(7)
numbers.append(3)
numbers.append(6)
numbers.append(5)
numbers.append(2)
numbers.append(13)
numbers.append(14)
print(numbers)

# numbers에서 홀수 제거
i = 0
while i < len(numbers):
    if numbers[i] % 2 == 1:
        del numbers[i]
    else:
        i += 1
    
print(numbers)

# numbers의 인덱스 0 자리에 20이라는 값 삽입
numbers.insert(0,20)
print(numbers)

# numbers를 정렬해서 출력
numbers = sorted(numbers)
print(numbers)

 

결과적으로 while문에 else처리를 해서 삭제처리 되었다면 다시 삭제된 인덱스값부터 시작할 수 있게 바꿔줘야 한다.

 

피드백)

 

1. list문은 del을 하면, 인덱스 값이 바로 채워지기 때문에 while문을 사용할 때, else처리 해주어야 한다.

2. for문을 사용하면 한줄로 코딩 가능하지만 아직 안배움;

numbers = [n for n in numbers if n % 2 == 0]

 

 


리스트 뒤집기

 

numbers = [2, 3, 5, 7, 11, 13, 17, 19]

# 리스트 뒤집기
for left in range(round(len(numbers) / 2)):
    right = len(numbers) - left -1
    numbers[right], numbers[left] = numbers[left], numbers[right]

print("뒤집어진 리스트: " + str(numbers))

 

급한 관계로 여기에 추가...

리스트값을 바꿔주려면 = 를 활용하여 바꾸는 순서를 우측에 넣어주면 된다ㅣ!

'데이터분석 > python' 카테고리의 다른 글

#8. 피타고라스 삼조  (1) 2025.10.27
for문 정리  (0) 2025.10.27
#5. 환전 서비스  (0) 2025.10.27
#4. 온도 단위 바꾸기  (0) 2025.10.27
파이썬 list 함수 요약  (0) 2025.10.26