lsit 생산(목록 생산)
1. 목록을 만드는 방법
이전 학습을 통해 우리 모두 목록을 만드는 방법을 알고 있지만 어떤 경우에는 과제 형식으로 목록을 만드는 것이 너무 번거롭습니다. 특히 일반 목록은 더욱 그렇습니다. 하나씩 작성해야 하는데, 값을 하나씩 할당하는 게 너무 번거롭습니다. 예를 들어, 30개의 요소가 포함된 목록을 생성하려고 하며 내부 요소는 1 - 30입니다. 다음과 같이 쓸 수 있습니다:
# -*- coding: UTF-8 -*- list1=list ( range (1,31) ) print(list1)
출력 결과:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
이것은 실제로 이전에 언급한 바 있습니다: 예를 들어, 구구단을 인쇄하는 예가 있습니다. 이 방법에는 몇 줄의 코드만 필요합니다. 이전 장: 조건문 및 루프 문의 종합 예
그러나 목록 생성을 사용하면 한 줄의 코드로 곱셈표를 생성할 수 있습니다. 구체적으로 코드를 살펴보세요.
print('\n'.join([' '.join ('%dx%d=%2d' % (x,y,x*y) for x in range(1,y+1)) for y in range(1,10)]))
최종 출력 결과:
1x1= 1 1x2= 2 2x2= 4 1x3= 3 2x3= 6 3x3= 9 1x4= 4 2x4= 8 3x4=12 4x4=16 1x5= 5 2x5=10 3x5=15 4x5=20 5x5=25 1x6= 6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7= 7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8= 8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9= 9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
그러나 여기서는 먼저 목록 생성을 생성하는 방법을 이해해야 합니다.
2. 목록 생성 생성
우선 구문입니다. lsit 생성은 다음과 같습니다.
[expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr]
첫 번째 구문: 먼저 iterable의 모든 내용을 반복합니다. 각 반복에 대해 iterable의 해당 내용을 iter_var에 넣은 다음 iter_var의 내용을 표현식에 적용하고 마지막으로 계산된 값을 사용합니다. 목록을 생성하는 표현식입니다.
두 번째 구문: 조건에 맞는 내용만 iterable 해당 내용을 iter_var에 넣은 다음 iter_var의 내용을 표현식에 적용하고 최종적으로 계산된 값을 사용하여 목록을 생성합니다. 표현식.
사실 이해하기 어렵지는 않습니다. 리스트 생성이기 때문에 반드시 []로 묶어야 하고, 그 안에 있는 문장은 생성할 요소를 앞에 두고 그 뒤에 for 루프 문이나 for 루프문과 판단문.
예:
# -*- coding: UTF-8 -*- lsit1=[x * x for x in range(1, 11)] print(lsit1)
출력 결과:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
보시다시피 생성할 요소 x * x를 앞에 두고 for 루프를 추가하면 목록을 만들 수 있습니다. 그렇다면 for 루프 뒤의 if 형식은 어떻습니까? 이해하는 방법:
# -*- coding: UTF-8 -*- lsit1= [x * x for x in range(1, 11) if x % 2 == 0] print(lsit1)
출력 결과:
[4, 16, 36, 64, 100]
이 예는 1부터 10까지의 짝수의 제곱근을 구하는 것입니다. 위에서 언급한 것처럼 x * x 가 생성될 요소이고, 후자는 실제로 for 루프에는 if 판단 문이 중첩되어 있습니다.
이러한 지식을 바탕으로 for 루프 내부에 for 루프가 중첩되어 있다는 것도 추측할 수 있습니다. 구체적인 예:
# -*- coding: UTF-8 -*- lsit1= [(x+1,y+1) for x in range(3) for y in range(5)] print(lsit1)
출력 결과:
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5)]
사실 이 내용은 리스트 생성 공식이 어떻게 결합되는지 알면 이해하기 어렵지 않습니다. 목록 생성은 이전에 배운 지식 포인트를 결합하고 이를 보다 간결한 작성 방법으로 대체하기 때문입니다.