python 中的列表解析和生成表达式
在需要改变列表而不是需要新建某列表时,可以使用列表解析。列表解析表达式为:
[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的内容,最后用表达式的计算值生成一个列表。
举例如下:
>>> L= [(x+1,y+1) for x in range(3) for y in range(5)]
>>> L
[(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)]
>>> N=[x+10 for x in range(10) if x>5]
>>> N
[16, 17, 18, 19]
生成器表达式
生成器表达式是在python2.4中引入的,当序列过长, 而每次只需要获取一个元素时,应当考虑使用生成器表达式而不是列表解析。生成器表达式的语法和列表解析一样,只不过生成器表达式是被()括起来的,而不是[],如下:
(expr for iter_var in iterable)
(expr for iter_var in iterable if cond_expr)
例:
>>> L= (i + 1 for i in range(10) if i % 2)
>>> L
>>> L1=[]
>>> for i in L:
... L1.append(i)
...
>>> L1
[2, 4, 6, 8, 10]
生成器表达式并不真正创建数字列表, 而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目“产生”(yield)出来。 生成器表达式使用了“惰性计算”(lazy evaluation,也有翻译为“延迟求值”,我以为这种按需调用call by need的方式翻译为惰性更好一些),只有在检索时才被赋值( evaluated),所以在列表比较长的情况下使用内存上更有效。A generator object in python is something like a lazy list. The elements are only evaluated as soon as you iterate over them.
一些说明:
1. 当需要只是执行一个循环的时候尽量使用循环而不是列表解析,这样更符合python提倡的直观性。
for item in sequence:
process(item)
2. 当有内建的操作或者类型能够以更直接的方式实现的,不要使用列表解析。
例如复制一个列表时,使用:L1=list(L)即可,不必使用:
L1=[x for x in L]
3. 如果需要对每个元素都调用并且返回结果时,应使用L1=map(f,L), 而不是 L1=[f(x) for x in L]

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Python, sebagai bahasa pengaturcaraan peringkat tinggi, mudah dipelajari dan digunakan. Sebaik sahaja anda perlu menulis program Python, anda pasti akan menghadapi ralat sintaks, dan ralat sintaks ungkapan adalah perkara biasa. Dalam artikel ini, kita akan membincangkan cara menyelesaikan ralat sintaks ungkapan dalam Python. Ralat sintaks ungkapan adalah salah satu ralat yang paling biasa dalam Python, dan ia biasanya disebabkan oleh penggunaan sintaks yang salah atau kehilangan komponen yang diperlukan. Dalam Python, ungkapan biasanya terdiri daripada nombor, rentetan, pembolehubah dan pengendali. paling biasa

Dalam C atau C++, koma "," mempunyai kegunaan yang berbeza. Di sini kita akan belajar cara menggunakannya. Koma sebagai pengendali. Operator koma ialah operator binari yang menilai operan pertama, membuang hasilnya, kemudian menilai operan kedua dan mengembalikan nilai. Operator koma mempunyai keutamaan terendah dalam C atau C++. Contoh #include<stdio.h>intmain(){ intx=(50,60); inty=(func1(),func2());} Di sini 60 akan diberikan kepada x. Untuk pernyataan seterusnya, func1( akan dilaksanakan terlebih dahulu

Pengenalan kepada cara menulis ungkapan fungsi eksponen dalam bahasa C dan contoh kod Apakah fungsi eksponen Fungsi eksponen ialah jenis fungsi yang biasa dalam matematik Ia boleh dinyatakan dalam bentuk f(x)=a^x, di mana a ialah asas dan x ialah eksponen. Fungsi eksponen digunakan terutamanya untuk menggambarkan pertumbuhan eksponen atau pereputan eksponen. Contoh kod fungsi eksponen Dalam bahasa C, kita boleh menggunakan fungsi pow() dalam perpustakaan matematik untuk mengira fungsi eksponen Berikut ialah contoh program: #include

Ungkapan Lambda di Jawa Dengan keluaran Java 8, ungkapan lambda telah menjadi salah satu topik yang paling membimbangkan dan dibincangkan di kalangan pembangun Java. Ungkapan Lambda boleh memudahkan kaedah penulisan pengaturcara Java yang membosankan, dan juga boleh meningkatkan kebolehbacaan dan kebolehselenggaraan program. Dalam artikel ini, kami akan mendalami ungkapan lambda dalam Java dan cara ia memberikan pengalaman pengaturcaraan yang lebih mudah dan intuitif dalam kod Java.

Ungkapan lambda ialah fungsi tanpa nama yang boleh digunakan dengan mudah untuk mengulang koleksi. Dalam artikel ini, kami akan memperkenalkan cara menggunakan ungkapan lambda untuk mengulang koleksi dan memberikan contoh kod khusus. Dalam Python, format sintaks ungkapan lambda adalah seperti berikut: senarai parameter lambda: Senarai parameter ungkapan lambda ungkapan boleh mengandungi satu atau lebih parameter, dipisahkan dengan koma. Ungkapan ialah nilai pulangan bagi fungsi lambda. Mari kita lihat contoh mudah di bawah, dengan andaian

Ungkapan Lambda, seperti namanya, ialah fungsi tanpa nama dengan simbol anak panah (->) sebagai terasnya. Ia membolehkan anda menghantar blok kod sebagai hujah kepada kaedah lain, atau menyimpannya ke dalam pembolehubah untuk kegunaan kemudian. Sintaks ungkapan Lambda ringkas dan mudah difahami, dan ia sangat sesuai untuk memproses aliran data dan pengkomputeran selari. 1. Sintaks asas ungkapan Lambda Sintaks asas ungkapan Lambda adalah seperti berikut: (senarai parameter)->{blok kod} Antaranya, senarai parameter dan blok kod adalah pilihan. Jika terdapat hanya satu parameter, kurungan boleh ditinggalkan. Jika blok kod hanya satu baris, pendakap kerinting boleh ditinggalkan. Sebagai contoh, blok kod berikut menggunakan ungkapan Lambda untuk menambah 1 pada nombor: Senarai

Pengenalan dan sintaks asas ungkapan Lambda Ungkapan Lambda terdiri daripada senarai parameter fungsi, titik bertindih dan badan fungsi. Senarai parameter fungsi adalah sama seperti fungsi biasa, dan badan fungsi ialah ungkapan dan bukannya satu set pernyataan. #Contoh: Kembalikan fungsi yang menerima dua nombor dan mengembalikan jumlah sum=lambdax,y:x+y Senario aplikasi ungkapan Lambda Ungkapan Lambda sangat sesuai digunakan sebagai fungsi panggil balik, fungsi penapis dan fungsi pemetaan. Fungsi panggil balik: Fungsi panggil balik ialah fungsi yang dipanggil dalam fungsi lain. Ungkapan Lambda memudahkan untuk mencipta fungsi panggil balik tanpa mengisytiharkan namanya. Fungsi penapis: Fungsi penapis digunakan untuk menapis penuh

Dengan perkembangan pesat teknologi komputer, bahasa pengaturcaraan sentiasa dinaik taraf dan ditambah baik. Antaranya, PHP, sebagai bahasa pembangunan web yang biasa digunakan, sentiasa berinovasi dan melancarkan versi baharu. Baru-baru ini, keluaran versi PHP8.0 telah menarik perhatian yang meluas. Antaranya, penambahbaikan kepada mekanisme pengendalian pengecualian dalam versi baharu telah menarik perhatian ramai. Artikel ini akan menumpukan pada topik sokongan blok pernyataan cuba untuk ungkapan dalam PHP8.0. 1. Penambahbaikan dalam mekanisme pengendalian pengecualian PHP8.0 Dalam versi sebelumnya, P
