파이썬의 리스트는 수학적 문장들을 한줄로 표현할 수 있습니다.


리스트로 제곱 표현하기 


기존의 파이썬 리스트를 활용하여 반복문으로 1의 제곱부터 9의 제곱까지 출력하는 방법입니다.


예제 코드 - 제곱 출력


square = []

for x in range(1, 10) :

    square.append(x ** 2)

print(square)


실행 결과


[1, 4, 9, 16, 25, 36, 49, 64, 81]


위 반복문으로 구현한 제곱 출력 코드를 다음과 같이 리스트 내에서 사용할 수 있습니다.


square = [x ** 2 for x in range(1, 10)]


위 반복문 3줄짜리 코드가 1줄로 대체되었습니다!!


출력 결과 역시 동일함을 알 수 있습니다.


위의 파이썬 리스트의 강력한 기능을 활용 해 구구단 출력 코드를 작성 해 보겠습니다.


예제 코드 - 구구단 출력


list1 = []


for i in range(2, 10) :

    for j in range(1, 10) :

        list1.append(i * j)


for i in range(2, 10) :

    for j in range(1, 10) :

        print("{} * {} = {}".format(i, j, list1[(j - 1)+((i - 2) * 9)]))

    print()


실행 결과


2 * 1 = 2

2 * 2 = 4

2 * 3 = 6

2 * 4 = 8

2 * 5 = 10

2 * 6 = 12

2 * 7 = 14

2 * 8 = 16

2 * 9 = 18


... 중략 ....


9 * 1 = 9

9 * 2 = 18

9 * 3 = 27

9 * 4 = 36

9 * 5 = 45

9 * 6 = 54

9 * 7 = 63

9 * 8 = 72

9 * 9 = 81


이중 for반복문을 사용하여 구구단을 출력하는 모습입니다.


이를 리스트 선언문에서 한줄로 만들면 다음과 같습니다.


list1 = [i*j for i in range(2,10) for j in range(1, 10)]


for i in range(2, 10) :

    for j in range(1, 10) :

        print("{} * {} = {}".format(i, j, list1[(j-1)+((i-2)*9)]))

    print()


출력문을 제외하면 코드는 단 한줄입니다. (파란색 코드)


이처럼 리스트를 선언할 때 파이썬의 리스트 기능을 적절히 사용하여 코드를 간단하고 보기 쉽게 만들 수 있습니다.




또한 파이썬 리스트에는 슬라이싱 기능또한 존재합니다.


간단히 말해 리스트 요소들을 필요한 만큼 자를 수 있는 기능입니다.


다음과 같은 리스트가 있다고 가정합시다.


list1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]


0부터 9까지 정수가 존재하는 리스트입니다.


여기서 3부터 8까지만 필요한 정수 리스트가 필요하다고 가정합니다.


새로운 배열을 생성하여 3부터 8까지 작성하여 선언할 필요없이 다음과 같이 선언할 수 있습니다.


list1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

list2 = list1[ 3 : 9 ]


정말 간단하죠?


: 연산자를 통해 시작 인덱스와 종료 인덱스를 설정해주면 자동으로 시작인덱스부터


종료인덱스-1 까지 리스트 요소들을 잘라줍니다.


또한 다음과 같이 사용 할 수도 있습니다.


list1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]


list2 = list1[ 3 : 9 ] # [3, 4, 5, 6, 7, 8] 출력

list3 = list1[ 1 : ] # [1, 2, 3, 4, 5, 6, 7, 8, 9] 출력

list4 = list1[ : 8 ] # [0, 1, 2, 3, 4, 5, 6, 7] 출력

list5 = list1[ 1 : 8 : 2 ] # [1, 3 ,5, 7] 출력

list6 = list1[ : : -1 ] # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 출력

list7 = list1[ 10 : 0 : -2 ] # [9, 7, 5, 3, 1] 출력


list2는 list1의 요소를 3부터 8까지 자른 리스트입니다.


list3는 list1의 요소를 1부터 끝까지 자른 리스트입니다.


list4는 list1의 요소를 처음부터 8까지 자른 리스트입니다.


list5는 list1의 요소를 1부터 8까지 간격이 2씩 자른 리스트입니다.


list6는 list1의 요소를 처음부터 끝까지 역순 리스트입니다.


list7는 list1의 요소를 10부터 0까지 간격이 2씩 역순 리스트입니다.



또한 필터(filter)함수를 사용하여 람다(lambda)식으로 제공된 조건을 첫번째 인수로 사용하고


두번째 인수에 조건을 나열하여 필터링 가능합니다.


list1 = list(filter(lambda x : x % 2 == 1, range(0, 10))) # [1, 3, 5, 7, 9] 출력

list2 = list(filter(lambda x : x >= 0, range(-5, 5))) # [0, 1, 2, 3, 4] 출력

list3 = reduce(lambda a, b : a if(a > b) else b, [5, -5, 0, 3, 11, -20, 7]) # 11 출력

#reduce 함수를 사용하기 위해 from functools import reduce 추가할것.


list1는 0부터 9사이 숫자 중 홀수만 가지는 리스트입니다.


list2는 -5부터 4사이 숫자 중 0보다 큰 숫자만 가지는 리스트입니다.


list3는 마지막 인수 리스트 중 가장 큰 숫자를 가지는 리스트입니다.




이상 '파이썬 리스트 활용'에 대해 알아보았습니다.


질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!


공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.




to Top