嫒美直播免费版app下载-嫒美直播永久免费版下载-嫒美直播最新下载安装

當(dāng)前位置:首頁(yè) > 教育綜合 > 正文

ay = [list(i) for i in zip(*ax)] 中的*ax是什么意思

python中for循環(huán)放在后面要怎么理解?

i等于9因?yàn)殚]包,lambda生成之后i引用的就是for循環(huán)中的i

建議你看一下python的列表生成器,

f = [(lambda n : i + n) for i in range(10)] 等同于

f=[]

for i in range(10)

f.append(lambda n : i + n)

下面是相關(guān)內(nèi)容

列表生成式即List Comprehensions,是Python內(nèi)置的非常簡(jiǎn)單卻強(qiáng)大的可以用來(lái)創(chuàng)建list的生成式。

舉個(gè)例子,要生成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]怎么做?方法一是循環(huán):

>>> L = []>>> for x in range(1, 11):... L.append(x * x)
...>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循環(huán)太繁瑣,而列表生成式則可以用一行語(yǔ)句代替循環(huán)生成上面的list:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

寫(xiě)列表生成式時(shí),把要生成的元素x * x放到前面,后面跟for循環(huán),就可以把list創(chuàng)建出來(lái),十分有用,多寫(xiě)幾次,很快就可以熟悉這種語(yǔ)法。

for循環(huán)后面還可以加上if判斷,這樣我們就可以篩選出僅偶數(shù)的平方:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

還可以使用兩層循環(huán),可以生成全排列:

>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

三層和三層以上的循環(huán)就很少用到了。

運(yùn)用列表生成式,可以寫(xiě)出非常簡(jiǎn)潔的代碼。例如,列出當(dāng)前目錄下的所有文件和目錄名,可以通過(guò)一行代碼實(shí)現(xiàn):

>>> import os # 導(dǎo)入os模塊,模塊的概念后面講到>>> [d for d in os.listdir('.')] # os.listdir可以列出文件和目錄['.emacs.d', '.ssh', '.Trash', 'Adlm', 'Applications', 'Desktop', 'Documents', 'Downloads', 'Library', 'Movies', 'Music', 'Pictures', 'Public', 'VirtualBox VMs', 'Workspace', 'XCode']

for循環(huán)其實(shí)可以同時(shí)使用兩個(gè)甚至多個(gè)變量,比如dict的iteritems()可以同時(shí)迭代key和value:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }>>> for k, v in d.iteritems():... print k, '=', v... y = B
x = A
z = C

因此,列表生成式也可以使用兩個(gè)變量來(lái)生成list:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }>>> [k + '=' + v for k, v in d.iteritems()]
['y=B', 'x=A', 'z=C']

最后把一個(gè)list中所有的字符串變成小寫(xiě):

>>> L = ['Hello', 'World', 'IBM', 'Apple']>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']

小結(jié)

運(yùn)用列表生成式,可以快速生成list,可以通過(guò)一個(gè)list推導(dǎo)出另一個(gè)list,而代碼卻十分簡(jiǎn)潔。

思考:如果list中既包含字符串,又包含整數(shù),由于非字符串類型沒(méi)有l(wèi)ower()方法,所以列表生成式會(huì)報(bào)錯(cuò):

>>> L = ['Hello', 'World', 18, 'Apple', None]
>>> [s.lower() for s in L]
Traceback (most recent call last):
File "", line 1, in AttributeError: 'int' object has no attribute 'lower'

使用內(nèi)建的isinstance函數(shù)可以判斷一個(gè)變量是不是字符串:

>>> x = 'abc'>>> y = 123>>> isinstance(x, str)True>>> isinstance(y, str)False

請(qǐng)修改列表生成式,通過(guò)添加if語(yǔ)句保證列表生成式能正確地執(zhí)行。

pascal跳馬問(wèn)題

if z=64 then print; doing(ax,ay,z+1); 改為 if z=64 then print else doing(ax,ay,z+1); 還有當(dāng)我把程序改為5*5時(shí),有308種解,所以當(dāng)是8*8時(shí)計(jì)算次數(shù)應(yīng)該是相當(dāng)大的,所以最好用別的算法

Flash AS3 問(wèn)題

術(shù)語(yǔ)尚未定義,并且無(wú)任何屬性。 沒(méi)定義或者生成一個(gè)對(duì)象就在引用它了

pascal 分解因式十字相乘法

var a:array [0..100] of integer; n,h:integer; procedure tr(m,t:integer); var i:integer; begin for i:=2 to m do if (a[t-1]<=i) and (i<=n div 2) and (m mod i=0)then begin a[t]:=i; m:=m div a[t]; if m=1 then inc(h) else tr(m,t); m:=m+a[t]; end; end; begin read(n); tr(n,2); write(h); end. 沒(méi)測(cè),你試一試吧追問(wèn)沒(méi)過(guò) 分

python小游戲

#五子棋import appuifw,e32,key_codes from graphics import *def cn(x):return x.decode('utf-8') def quit(): _quit=1 global running running=1 def redraw(rect): canvas.blit(img)def default(): global con,color,font con={"l":15,"x":15,"y":33,"r":13,"n":15} color={"bg":0x7777bb,"fg":0x333333,"p1":0x000000,"p2"
展開(kāi)全文閱讀