列表生成式

2021-07-07 06:58:16 字數 3034 閱讀 4796

列表生成式

1生成列表

要生成list [1, 2, 3, 4,5, 6, 7, 8, 9, 10]

,我們可以用

range(1, 11)

:>>> range(1, 11)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

但如果要生成

[1x1, 2x2, 3x3,..., 10x10]

怎麼做?方法一是迴圈:

>>> l =

>>> for x in range(1, 11):

...

>>> l

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是迴圈太繁瑣,而列表生成式則可以用一行語句代替迴圈生成上面的

list

:>>> [x * x for x in range(1, 11)]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

這種寫法就是

python

特有的列表生成式。利用列表生成式,可以以非常簡潔的**生成

list

。寫列表生成式時,把要生成的元素

x * x

放到前面,後面跟

for

迴圈,就可以把

list

建立出來,十分有用,多寫幾次,很快就可以熟悉這種語法。任務

請利用列表生成式生成列表

[1x2, 3x4, 5x6,7x8, ..., 99x100]

range(1, 100, 2)

可以生成

list [1, 3, 5, 7, 9,...]

?不會了怎麼辦

把每次迴圈的

x 變成列表中的元素

x * (x + 1)

參考**

:

print [x * (x + 1) for x in range(1,100, 2)]

2複雜表示式

使用for

迴圈的迭代不僅可以迭代普通的

list

,還可以迭代

dict

。假設有如下的

dict

:d =

完全可以通過乙個複雜的列表生成式把它變成乙個

html

**:tds =['%s

%s'

%(name, score)

forname, score

ind.iteritems()]

print''

print'name

score'

print'\n'.join(tds)

print''

注:字串可以通過

% 進行格式化,用指定的引數替代%s

。字串的

join()

方法可以把乙個

list

拼接成乙個字串。

把列印出來的結果儲存為乙個

html

檔案,就可以在瀏覽器中看到效果了:

name

score

lisa85

adam95

bart59

3條件過濾

列表生成式的

for迴圈後面還可以加上

if 判斷。例如:

>>> [x * x

forx

inrange(1, 11)]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

如果我們只想要偶數的平方,不改動

range()

的情況下,可以加上

if 來篩選:

>>> [x * x

forx

inrange(1, 11)

ifx % 2 == 0]

[4, 16, 36, 64, 100] 有了

if 條件,只有

if 判斷為

true

的時候,才把迴圈的當前元素新增到列表中。任務

請編寫乙個函式,它接受乙個

list

,然後把

list

中的所有字串變成大寫後返回,非字串元素將被忽略。

1. isinstance(x, str)

可以判斷變數

x 是否是字串;

2. 字串的

upper()

方法可以返回大寫的字母。

4多層表示式

for迴圈可以巢狀,因此,在列表生成式中,也可以用多層

for迴圈來生成列表。

對於字串

'abc'

和'123'

,可以使用兩層迴圈,生成全排列:

>>> [m + n

form

in'abc'

forn

in'123']

['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']

翻譯成迴圈**就像下面這樣:

l =

form in

'abc'

:for

n in

'123':

任務 利用3

層for

迴圈的列表生成式,找出對稱的

3 位數。例如,

121

就是對稱數,因為從右到左倒過來還是

121。

?不會了怎麼辦

百位的迴圈從

1-9,十位和個位的迴圈從

0-9。

參考**

:

print [100 * n1+ 10 * n2 + n3 for n1 in range(1, 10) for n2 in range(10) for n3 in range(10)if n1==n3]

列表生成式

列表生成式即list comprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式。舉個例子,要生成list 1,2,3,4,5,6,7,8,9,10 可以用list range 1,11 list range 1,11 1,2,3,4,5,6,7,8,9,10 但...

列表生成式

列表生成式,是 python 內建的一種極其強大的生成list的表示式。如果要生成乙個列表,可以用range 1,10 range 1,4 1,2,3 生成 1 1 2 2 3 3 10 10 怎麼做呢?可以使用迴圈 l for x in range 1,10 l 1,4,9,16,25,36,49...

列表生成式

coding utf 8 列表生成式是快速生成乙個list列表的一種快捷方式。my list for x in xrange 1,11 res x x print my list 生成式寫法 x x for迴圈遍歷出來的值進行的邏輯運算 for x in xrange for迴圈表示式 res x ...