프로그래밍/Python

Python-16) 리스트 인덱스, 추출, reverse : Python list , list 객체, 파이썬 리스트

LeeSeunghyuk 2020. 12. 15. 11:10
반응형

안녕하세요.

 

리스트 객체를 다루는 실습을 진행해 보도록 하겠습니다.

 

리스트 자료형이란 각각의 변수들을 모아 하나로 만든 객체입니다.

1 , 3, 5, 7, 9 라는 숫자를 각각 홀수1,홀수2,홀수3... 으로 지정하는 불편함을

홀수 = [1,3,5,7,9] 라는 하나의 리스트로 간편하게 나타낼 수 있습니다.

 


※ 리스트 인덱스

 

     문자열 객체와 마찬가지로 리스트 객체 역시 인덱스(index)를 가집니다.

     첫 요소의 인덱스는 0으로 시작합니다.

     가장 마지막 인덱스는 -1로 시작합니다.

listdata=[1,2,3,4,5]
print(listdata[0])
print(listdata[-1])


※ 리스트 인덱스 구하기

 

     리스트 객체의 index() 메소드는 리스트에서 요소의 값을 알 때, 그 요소의 최초 위치 인덱스를 리턴합니다.

     또한, 2번째 인자로 정수를 받아 해당 숫자 이상 인덱스에서 값을 찾을 수 있습니다.

listdata=['월','화','수','목','금','토','일','월']
today='월'
print('오늘은 %s요일 입니다. index=%d'%(today,listdata.index(today)))
idx=listdata.index(today)
print('다음 월요일의 인덱스는 %d입니다.'%(listdata.index(today,idx+1)))


※ 리스트 특정 요소 변경하기

 

     리스트에서 특정 위치의 요소 값을 변경하는 방법입니다.

     특정 위치의 인덱스에 해당하는 요소를 변경할 값으로 변경합니다.

 

     list[index]=변경할 값

listdata=['월','화','수','목','금','토','일','월']
today='월'
print('오늘은 %s요일 입니다. index=%d'%(today,listdata.index(today)))
idx=listdata.index(today)
print('다음 월요일의 인덱스는 %d입니다.'%(listdata.index(today,idx+1)))
idx_2=listdata.index(today,idx+1)
listdata[(listdata.index(today,idx+1))]='다음 월요일'

print(listdata)

리스트의 요소가 변경되었습니다.


※ 리스트의 특정 요소 추출하기

 

     슬라이싱을 이용해 특정 구간의 요소를 추출할 수 있습니다.

listdata=['월','화','수','목','금','토','일']
weekday=listdata[0:5]
holiday=listdata[5:]
print(weekday)
print(holiday)


※ 리스트 특정 요소 추출하기 ( step )

 

     문자열과 마찬가지로 슬라이싱할 때 step을 사용할 수 있습니다.

 

     다음 예시는 슬라이싱을 사용해 정수 리스트에서 짝수와 홀수를 추출하는 방법입니다.

listdata=[1,2,3,4,5,6,7,8,9]
print(listdata[0::2])
print(listdata[1::2])

     문자열에서 슬라이싱을 사용해 거꾸로 리스트를 출력하는 방법도 있었습니다.

     리스트에도 적용되는지 확인해 봅니다.

     정상적으로 역순으로 출력되는 것을 확인할 수 있습니다.


 

※ 리스트 요소 역순으로 만들기 (reverse)

 

     슬라이싱이 아닌 리스트 객체의 메소드를 사용하는 방법입니다.

     reverse 메소드를 사용하여 원본 리스트 변경하는 작업을 수행할 수 있습니다.

listdata=[1,2,3,4,5,6,7,8,9]
listdata.reverse()
print(listdata)

     listdata 변수에 reverse메소드를 사용하여 출력한 모습입니다.

     listdata 변수가 가진 요소가 거꾸로 변경된 것을 확인할 수 있습니다.

     리스트 원본 데이터는 그대로 두고, 결과만 역순으로 확인하는 방법도 있습니다.


 

※ 리스트 요소 역순으로 만들기 (reversed)

 

     파이썬 내장함수 reverse()를 사용합니다. 

     리스트 객체의 함수가 아닌, 파이썬 자체의 내장함수 입니다.

     reversed()함수는 입력된 시퀀스 요소를 역순으로한 새로운 시퀀스 자료형을 만들어 리턴합니다.

     원본 데이터를 변경하지 않습니다.

listdata=[1,2,3,4,5,6,7,8,9]
print(reversed(listdata))
print(list(reversed(listdata)))
print(listdata)

    리턴하는 자료의 형태가 list_reverseiterator object입니다.

    따라서 리스트 형태로 강제 변환을 해준 후 출력한 결과를 확인합니다.

    마지막으로 원본 데이터를 확인했을 때 원본 데이터는 변경되지 않은 것을 확인할 수 있습니다.

 

    또다른 시퀀스 자료 range 객체에도 적용해 보았습니다.

    처음 생성한 range(1,10)의 역순으로 된 결과를 확인할 수 있고,

    원본 range 객체는 변경되지 않은 것을 확인했습니다.

listdata=range(1,10)
print(reversed(listdata))
print(list(reversed(listdata)))
print(listdata)

for i in listdata:
    print(i)


※ 리스트 합치기 

    

     문자열을 합칠 수 있었습니다. 문자열을 합치는 방법은 + 연산자를 사용했습니다.

     리스트도 마찬가지입니다.

weekday=['월', '화', '수', '목', '금']
holiday=['토', '일']
week=weekday+holiday
print(week)


※ 리스트 반복하기

 

     문자열의 반복은 * 연산자를 사용해서 새로운 문자열을 만들 수 있었습니다.

     리스트도 * 연산자를 사용해 새로운 리스트를 만듭니다.

week=holiday*3
print(week)

 

     

다음 실습은 리스트 객체에 추가, 삽입, 제거, 정렬 , 섞기 등의 다양한 실습을 진행하도록 하겠습니다.

감사합니다.

반응형