Python 프로그래밍 입문(008) - 목록 연산(3): 목록 이해

Python 프로그래밍 입문(008) - 목록 연산(3): 목록 이해

목록 이해를 사용하여 목록을 빠르게 생성하세요. 또는 특정 목록을 기반으로 특정 요구 사항을 충족하는 목록을 생성합니다. 목록 이해는 대괄호로 묶여 있으며 표현식, 하나 이상의 for 루프 및 결과 목록을 필터링하는 선택적 조건으로 구성됩니다.

목록 이해의 구문 형식은 다음과 같습니다.

new_list = [expression(item) for item in iterable if condition]

相当于如下语句:
new_list = []
for item in iterable:
    if condition:
        new_list.append(expression(item))

설명하다:

(1) 표현식(Expression): 목록의 요소를 계산하는 데 사용되는 표현식입니다.

(2) 항목: 루프 변수.

(3) 반복 가능: 반복 가능한 객체입니다.

(4) 조건: 조건.

1. 기본 적용 사례

1. 1부터 10까지로 구성된 목록을 생성합니다.

num1 = [x for x in range(1,11)]
print(num1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

위의 예는 int 유형의 길이에 따라 두 개의 연속 영역을 할당하고 이를 int 유형의 포인터로 캐스팅하고 첫 번째 주소를 포인터 변수 ps에 할당한다는 의미입니다.

2. 2-20 사이의 짝수 목록을 생성합니다.

num1 = [2*x for x in range(1,11)]
print(num1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

3. 1-19 사이의 홀수 목록을 생성합니다.

num1 = [2*x-1 for x in range(1,11)]
print(num1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

4. 중첩 목록 생성

num1 = [[x,x**2,x**3] for x in range(1,11)]
print(num1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[[1, 1, 1], [2, 4, 8], [3, 9, 27], [4, 16, 64], [5, 25, 125], [6, 36, 216], [7, 49, 343], [8, 64, 512], [9, 81, 729], [10, 100, 1000]]

2. 조건 추가

1. 10개의 짝수 목록을 생성합니다.

num1 = [x for x in range(1,11) if x%2==0]
print(num1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[2, 4, 6, 8, 10]

2. 10개의 홀수 목록 생성

num1 = [x for x in range(1,11) if x%2==1]
print(num1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[1, 3, 5, 7, 9]

3. 1-3과 7-10 사이의 정수 목록을 생성합니다.

num1 = [x for x in range(1,11) if x>=7 or x<=3]
print(num1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[1, 2, 3, 7, 8, 9, 10]

4. x의 값이 2에서 5 사이이면 list comprehension은 2*x를 반환하고, 그렇지 않으면 x**2를 반환합니다.

num1 = [2*x if x>=2 and x<=5 else x**2 for x in range(1,11)]
print(num1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[1, 4, 6, 8, 10, 36, 49, 64, 81, 100]

3. 여러 목록을 결합하려면 zip() 함수를 사용하세요.

zip 함수와 함께 사용되는 목록 이해는 튜플 목록을 반환합니다. 여기서 n번째 튜플은 각 목록의 n번째 요소를 포함합니다.

예 1:

cities = ['Rome', 'Warsaw', 'London']
countries = ['Italy', 'Poland', 'United Kingdom']
list1 = [(city, country) for city, country in zip(cities, countries)]
print(list1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[('Rome', 'Italy'), ('Warsaw', 'Poland'), ('London', 'United Kingdom')]

예 2:

a = [2, 3, 4, 5]
b = [12, 13, 14, 15]
list1 = [x+y for x,y in zip(a,b)]
print(list1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[14, 16, 18, 20]

예 3:

a = [2, 3, 4, 5]
b = [12, 13, 14, 15]
c = [22, 23, 24, 25]
list1 = [2*x+3*y+z for x,y,z in zip(a,b,c)]
print(list1)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[62, 68, 74, 80]

4. 중첩된 목록 이해

list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
list2 = [[x*2 for x in row] for row in list1]
print(list2)

运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
[[2, 4, 6], [8, 10, 12], [14, 16, 18]]

Guess you like

Origin blog.csdn.net/weixin_44377973/article/details/132123140