序言
python的列表對象是這個語言提供的最通用的序列,列表是一個任意類型的對象的位置相關的有序集合,它沒有固定的大小。不像字符串,其大小是可變的,通過對偏移量進行賦值以及其他各種列表的方法進行調用,確實能夠修改列表的大小。列表的形式如下
>>
>
A
=
[
'apple'
,
1
,
[
1
,
2
,
'peach'
]
,
2
]
列表可以包含多種元素,可以進行嵌套,帶有多種方法(具體的方法,可以查看相關手冊),通過這些方法,列表可以有很多功能,例如可以當做棧,隊列(低效,一般不用)等,下面我們主要介紹 列表推導式 的使用。
主體內容
列表推導式提供了一個更簡單的創建列表的方法。常見的用法是把某種操作應用于序列或可迭代對象的每個元素上,然后使用其結果來創建列表,或者通過滿足某些特定條件元素來創建子序列
例如,我們通常創建一個列表,是這樣的姿勢
>>
>
squares
=
[
]
>>
>
for
x
in
range
(
10
)
:
.
.
.
squares
.
append
(
x
**
2
)
.
.
.
>>
>
squares
[
0
,
1
,
4
,
9
,
16
,
25
,
36
,
49
,
64
,
81
]
但是,我們也可以這樣創建
squares
=
[
x
**
2
for
x
in
range
(
10
)
]
它們的結果是一樣的,但第二種方法更加簡潔易讀。
列表推導式
的結構是由
一對方括號
所包含的以下內容:
一個表達式,后面跟一個 for 子句,然后是零個或多個 for 或 if 子句
。 其結果將是一個新列表,由對表達式依據后面的 for 和 if 子句的內容進行求值計算而得出。例如下面的例子。
>>
>
[
(
x
,
y
)
for
x
in
[
1
,
2
,
3
]
for
y
in
[
3
,
1
,
4
]
if
x
!=
y
]
[
(
1
,
3
)
,
(
1
,
4
)
,
(
2
,
3
)
,
(
2
,
1
)
,
(
2
,
4
)
,
(
3
,
1
)
,
(
3
,
4
)
]
它等價于
>>
>
combs
=
[
]
>>
>
for
x
in
[
1
,
2
,
3
]
:
.
.
.
for
y
in
[
3
,
1
,
4
]
:
.
.
.
if
x
!=
y
:
.
.
.
combs
.
append
(
(
x
,
y
)
)
.
.
.
>>
>
combs
[
(
1
,
3
)
,
(
1
,
4
)
,
(
2
,
3
)
,
(
2
,
1
)
,
(
2
,
4
)
,
(
3
,
1
)
,
(
3
,
4
)
]
列表推導式可以使用復雜的表達式和嵌套函數
>>
>
from
math
import
pi
>>
>
[
str
(
round
(
pi
,
i
)
)
for
i
in
range
(
1
,
6
)
]
[
'3.1'
,
'3.14'
,
'3.142'
,
'3.1416'
,
'3.14159'
]
列表推導式也支持嵌套,如下代碼所示
>>
>
matrix
=
[
.
.
.
[
1
,
2
,
3
,
4
]
,
.
.
.
[
5
,
6
,
7
,
8
]
,
.
.
.
[
9
,
10
,
11
,
12
]
,
.
.
.
]
下面的列表推導式將交換其行和列
>>
>
[
[
row
[
i
]
for
row
in
matrix
]
for
i
in
range
(
4
)
]
[
[
1
,
5
,
9
]
,
[
2
,
6
,
10
]
,
[
3
,
7
,
11
]
,
[
4
,
8
,
12
]
]
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
