#numnote.py
創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供花都企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為花都眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
def?numnote(lst):
msg=[?]
for?num?in?lst:
if?num0:
s=str(num)+'?is?negative'
elif?0=num=9:
s=str(num)+'?is?a?digit'
else:
continue
msg.append(s)
return?msg
這個(gè)應(yīng)該是書(shū)上有問(wèn)題吧。
加一個(gè)?else:?continue??就ok了
在python中可以使用in符號(hào)判斷指定的元素是否存在于列表中,但我發(fā)現(xiàn)元組和數(shù)組存在區(qū)別,下面是詳細(xì)實(shí)驗(yàn)結(jié)果。
'test'
in
['replace','test']
True
'test'
in
('replace','test')
True
'test'
in
['test/codes','replace']
False
'test'
in
('test/codes','replace')
False
'test'
in
['test/codes']
False
'test'
in
('test/codes')
True
前面5條測(cè)試都符合我們的預(yù)期,只有最后一條,將數(shù)組換成元組后,在元組中只有一個(gè)元素的時(shí)候,python居然是把元組當(dāng)成了字符串處理,不知道為什么會(huì)有這樣的處理方式,但開(kāi)發(fā)的時(shí)候卻要注意,只用in語(yǔ)句判斷數(shù)組中是否存在制定元素時(shí),最好用[]的數(shù)組,而非元組
1、創(chuàng)建python文件,文件名為:testlistadd.py;
2、編寫(xiě)代碼,在原有l(wèi)ist的每個(gè)元素前面加上字符‘1’;
old_list?=?['a','b','c','d']
new_list?=?['1'+x?for?x?in?old_list]
print(new_list)
3、在窗口中右擊,并選擇‘在終端中運(yùn)行Python文件’選項(xiàng),執(zhí)行python代碼;
4、在‘終端’窗口中,查看執(zhí)行結(jié)果,可以發(fā)現(xiàn)滿(mǎn)足所需,即在所有元素前面都加了字符串‘1’。
我很理解你的疑惑,我相信這個(gè)對(duì)任何一個(gè)第一次接觸到這種寫(xiě)法的人都有疑惑,不過(guò)我已經(jīng)明白它的執(zhí)行順序,其實(shí)最容易明白的就是寫(xiě)一個(gè)等效寫(xiě)法,“a in b for b in c”的寫(xiě)法跟“x for x in y”的寫(xiě)法并沒(méi)有本質(zhì)上的區(qū)別,只不過(guò)前者輸出的b又作為“in”的參數(shù)繼續(xù)運(yùn)算一次而已(同理它還可以是其它運(yùn)算,未必是a in b,只不過(guò)現(xiàn)在它是一個(gè)列表,如果c是一維的列表,那循環(huán)一次出來(lái)的b就是單個(gè)元素,假設(shè)它是數(shù)字,那就可以執(zhí)行比如b+1 for b in c這種操作),這種一般都用于生成一個(gè)列表,說(shuō)再多不如舉個(gè)例子(以下例子皆為實(shí)測(cè)通過(guò)):
```
#?二維數(shù)組(在python中這個(gè)叫列表)
c?=?[[7,?8,?9],?[1,?2,?3],?[4,?5,?6]]
#?簡(jiǎn)易寫(xiě)法,結(jié)果:?[7,?8,?9,?1,?2,?3,?4,?5,?6]
l1?=?[a?for?b?in?c?for?a?in?b]
print(l1)
#?常規(guī)寫(xiě)法(相當(dāng)于上邊的簡(jiǎn)易寫(xiě)法),結(jié)果:?[7,?8,?9,?1,?2,?3,?4,?5,?6]
l2?=?[]
for?b?in?c:
for?a?in?b:
l2.append(a)
print(l2)
#?上述的a還可以作為參數(shù)繼續(xù)傳入其它函數(shù)或在表達(dá)式中使用,比如作為in的參數(shù),結(jié)果:?[False,?True,?False]
#?解釋一下執(zhí)行順序:先執(zhí)行for?in,循環(huán)一次就出來(lái)一個(gè)b,然后再執(zhí)行num?in?b,num?in?b的結(jié)果(True/False)作為列表的
#?一個(gè)元素,至此一個(gè)循環(huán)結(jié)束,然后又開(kāi)始下一個(gè)for?in循環(huán),直到所有元素循環(huán)完,最后產(chǎn)生一個(gè)元素值為T(mén)rue/False組成的列表!
num?=?3
l3?=?[num?in?b?for?b?in?c]
print(l3)
#?上面寫(xiě)法相當(dāng)于
l4?=?[]
for?b?in?c:
l4.append(num?in?b)
print(l4)
#?a在表達(dá)式中參與表達(dá)式運(yùn)算
#?結(jié)果:[8,?9,?10,?2,?3,?4,?5,?6,?7]
l5?=?[a+1?for?b?in?c?for?a?in?b]
print(l5)
#?該寫(xiě)法是上述寫(xiě)法的常規(guī)寫(xiě)法
l6?=?[]
for?b?in?c:
for?a?in?b:
l6.append(a+1)
print(l6)
```
提交答案后,發(fā)現(xiàn)百度會(huì)把空格縮進(jìn)全都去掉,而縮進(jìn)作為python的靈魂,沒(méi)有了縮進(jìn)的python代碼根本沒(méi)辦法運(yùn)行,所以我給你截個(gè)圖,你復(fù)制代碼后自己去縮進(jìn)吧:
python的一種寫(xiě)法:a in b for b in c
又一次修改答案,這次我要吐槽一下,不要來(lái)這里問(wèn)關(guān)于代碼的問(wèn)題,前面的代碼你也看到了,百度知道根本無(wú)法嵌入代碼,直接把代碼當(dāng)普通文本,空格縮進(jìn)全給你去掉,然后我想著,好,文本的空格被你去掉我上傳圖片總行了吧?結(jié)果,這圖片被壓縮的模糊不清,勉強(qiáng)能看見(jiàn),將就著看吧。
in 在python中的使用很常見(jiàn),用處也很多,很強(qiáng)大,這里記錄下幾種常見(jiàn)的用法。
def?list_add(a):
c?=?0
for?i?in?range(len(a)):
c?=?c?+?a[i]
return?c