Python中列表解析式與生成器表示式

2021-09-18 02:40:56 字數 3705 閱讀 9583

生成器表示式

生成器和列表解析式對比

集合解析式

字典解析式

總結習題:

# 非列表解析式寫法

even =

for x in rang(10)

:if x %2==

0:--

----

----

----

----

----

----

----

# 列表解析式寫法

even =

[x for x in

range(10

)if x%2==

0]

以下例子返回值會是什麼?

newlist =

[print

(i)for i in

range(10

)]print

(newlist)

newlist1 =

[str

(i)for i in

range(10

)]print

(newlist1)

輸出結果:

012

3456

789[

none

,none

,none

,none

,none

,none

,none

,none

,none

,none][

'0',

'1',

'2',

'3',

'4',

'5',

'6',

'7',

'8',

'9']

例: 20以內,既能被2整除又能被3整除的數

print

([i for i in

range(20

)if i%2==

0and i%3==

0])print

([i for i in

range(20

)if i%2==

0if i%3==

0])

輸出結果

[0,

6,12,

18][0

,6,12

,18]

例:

print([

(x,y)

for x in

'abc'

for y in

range(3

)])print([

[x,y]

for x in

'abc'

for y in

range(3

)])print([

for x in

'abc'

for y in

range(3

)])

輸出結果:

[

('a',0

),('a',1

),('a',2

),('b',0

),('b',1

),('b',2

),('c',0

),('c',1

),('c',2

)][[

'a',0]

,['a',1]

,['a',2]

,['b',0]

,['b',1]

,['b',2]

,['c',0]

,['c',1]

,['c',2]

][,,

,,,,

,,]

請問下面3中輸出各是什麼?

print([

(x,y)

for x in

range(7

)if x >

4for y in

range(20

,25)if y>23]

)print([

(x,y)

for x in

range(7

)for y in

range(20

,25)if x>

4if y>23]

)print([

(x,y)

for x in

range(7

)for y in

range(20

,25)if x>

4and y>23]

)

輸出結果

[(5

,24),

(6,24

)][(

5,24)

,(6,

24)][

(5,24

),(6

,24)]

g =(""

.format

(i)for i in

range(1

,5))

next

(g)for x in g:

print

(x)print

('-----------'

)for x in g:

print

(x)

輸出結果

0002

0003

0004--

----

----

-

解析:1.延遲計算;2.返回迭代器,可以迭代;3.從前到後走完一遍後,不能回頭

g =[""

.format

(i)for i in

range(1

,5)]

for x in g:

print

(x)print

('-----------'

)for x in g:

print

(x)

0001

0002

0003

0004--

----

----

-0001

0002

0003

0004

注:,會報typeerror錯誤,因為[x]是list,集合內的元素需要可hash,而list是不可hash

注:,會報typeerror錯誤,因為key是list,不可hash

會輸出幾個元素呢?

輸出結果: 原因是字典有去重特性,而後一次的輸出結果會覆蓋前一次。

第一題 使用列表解析式 列印九九乘法表 第一題

第二題 使用列表解析式生成 「0001.abadicddws」 格式的id號 第一題

要求id格式是以點號分割,左邊是4位從1開始的整數,右邊是10位隨機小寫英文本母。

請依次生成前100個id的列表,如圖:

'0001.bbcomlkdyt'

'0002.yzjudytpna'

'0003.zycscjsvfy'

'0004.hhvqzlukui'

'0005.xissuxwsou'

習題參***

列表生成式(列表解析式 列表推導式)

li for i in range 0,101 print li 用列表解析式 列表生成式 列表推導式 li i for i in range 0,101 print li 裡面的i可以是其他的 li x for x in range 0,101 print li 對結果進行其他操作方式 li i ...

Python列表解析式

有時候,乙個程式設計設計模式使用得十分普遍,甚至會逐步形成自己獨特的語法。python程式語言中的列表解析式 list comprehension 就是這類語法糖 syntactic sugar 的絕佳代表。python中的 列表解析式 是個偉大的發明,但是要掌握好這個語法則有些難,因為它們並是用來...

python 列表解析式

python的列表解析式只是為了解決已有問題提供新的語法 什麼是列表解析式?列表解析式是將乙個列表轉換成另乙個列表的工具。在轉換過程中,可以指定元素必須符合一定的條件,才能新增至新的列表中,這樣每個元素都可以按需要進行轉換。可以把列表解析式看作為結合了filter函式與map函式功能的語法糖 dou...