Rumah >pembangunan bahagian belakang >Tutorial Python >Senaraikan pemantauan dalam python

Senaraikan pemantauan dalam python

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-03-07 11:29:08484semak imbas

List Comprehensions in Python

Pemahaman senarai Python menyediakan cara ringkas untuk menulis kod, yang membolehkan anda mengira nilai ekspresi secara serentak dan memberikannya kepada pembolehubah. Menggunakan operator walrus (: =), kita dapat mengoptimumkan kod:

square_cubes = [res if (res := n**2) % 9 == 0 or res % 4 == 0 else n**3 for n in range(1, 11)]
print(square_cubes)  # 输出: [1, 4, 9, 16, 125, 36, 343, 64, 81, 100]
di sini, kami menyimpan pembolehubah

untuk menyimpan hasil pengiraan res dan menggunakannya semula dalam kod berikutnya untuk mengelakkan pengiraan berulang. n**2

senarai pemahaman gelung bersarang

Senarai pemahaman menyokong gelung bersarang, dan tidak ada batasan bilangan gelung. Tetapi perlu diperhatikan bahawa urutan gelung mesti konsisten dengan kod asal. Anda juga boleh menambah keadaan

pilihan selepas setiap for kitaran. Struktur pemahaman senarai bersarang for gelung adalah seperti berikut: if for

Contoh berikut menunjukkan pemahaman senarai gelung bersarang untuk menjana jadual pendaraban:
[ <表达式> for <元素a> in <可迭代对象a> (可选 if <条件a>)
              for <元素b> in <可迭代对象b> (可选 if <条件b>)
              for <元素c> in <可迭代对象c> (可选 if <条件c>)
              ... ]

menukarnya ke pemahaman senarai:
multiplications = []
for i in range(1, 4):
    for n in range(1, 11):
        multiplications.append(i*n)
print(multiplications) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

pemahaman senarai juga boleh digunakan untuk meratakan senarai bersarang:
multiplications = [i*n for i in range(1,4) for n in range(1,11)]
print(multiplications) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

Pemahaman Senarai Bersarang
matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
]
flatten = [n for row in matrix for n in row]
print(flatten) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Pemahaman senarai bersarang adalah berbeza daripada pemahaman senarai gelung bersarang. Yang pertama adalah derivasi bersarang dalaman yang disimpulkan, manakala yang terakhir adalah gelung bersarang dalaman gelung. Sebagai contoh, matriks transpose:

Gunakan gelung biasa:

Gunakan pemahaman senarai bersarang:
matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
]
transpose = []
for i in range(4):
    temp = []
    for row in matrix:
        temp.append(row[i])
    transpose.append(temp)
print(transpose) # 输出: [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

set dan derivasi kamus
matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
]
transpose = [[row[n] for row in matrix] for n in range(4)]
print(transpose) # 输出: [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

Konsep pemahaman senarai juga terpakai untuk menetapkan dan pemantauan kamus. Kamus digunakan untuk menyimpan pasangan nilai utama:

set terbitan digunakan untuk membuat set yang tidak teratur:
squares_cubes = {n: n**2 if n%2 == 0 else n**3 for n in range(1,11)}
print(squares_cubes) # 输出: {1: 1, 2: 4, 3: 27, 4: 16, 5: 125, 6: 36, 7: 343, 8: 64, 9: 729, 10: 100}

Ringkasan
import random
non_multiples = {n for n in random.sample(range(0, 1001), 20) if n not in range(0, 1001, 9)}
print(non_multiples) # 输出 (示例): {3, 165, 807, 574, 745, 266, 616, 44, 12, 910, 336, 145, 755, 179, 25, 796, 926}

Artikel ini memperkenalkan pemantauan senarai Python dan aplikasi mereka dalam pengoptimuman kod, termasuk gelung bersarang, derivasi bersarang, dan derivasi koleksi dan kamus. Harus diingat bahawa untuk gelung bersarang kompleks, untuk meningkatkan kebolehbacaan kod, pemahaman senarai boleh dibahagikan kepada pelbagai baris. Adalah disyorkan untuk memilih kaedah yang sesuai mengikut situasi sebenar, dengan mengambil kira kecekapan kod dan kebolehbacaan.

Atas ialah kandungan terperinci Senaraikan pemantauan dalam python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn