欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python筆試面試題小結(jié)

系統(tǒng) 1609 0

1.字符串處理

  將字符串中的數(shù)字替換成其兩倍的值,例如:

修改前:"AS7G123m (d)F77k"

修改后:"AS14G246m (d)F154k"

  個(gè)人思路:先用正則表達(dá)式將其中的數(shù)字匹配出來(lái)進(jìn)行乘2操作,然后將字符串根據(jù)其中的數(shù)字進(jìn)行切割,得到一個(gè)字符列表,最終將乘以2后的數(shù)字和原有的字符進(jìn)行拼接得到最后的結(jié)果。(我腦子比較笨,想不到別的,如果您有更好更簡(jiǎn)便的方法,希望可以分享一下!)

            
import re

text = "AS7G123m (d)F77k"
nums = re.findall(r'(\d+)', text) # 取出字符串中數(shù)字
double_nums = [2 * int(i) for i in nums]  # 乘以2
the_str = [] # 字符列表
for i in nums:
  the_str.append(text.split(i, 1)[0])
  text = text.split(i, 1)[1]
result = "" # 結(jié)果
for i in range(len(double_nums)):
  result += the_str[i] + str(double_nums[i])
result += text
print(result)
          

2.Python傳參是值傳遞還是引用傳遞?

  答案是Python中傳遞參數(shù)是引用傳遞,那么要證明是引用傳遞呢?可以參考下面這個(gè)例子:

            
 def f(x):
   print(id(x))
   
 
 a = 1
 print(id(a))
 f(a)
 # 140716760159264
 # 140716760159264
          

這里分別打印了兩個(gè)地址,一個(gè)是對(duì)象a的地址,一個(gè)是傳入的參數(shù)x的地址,可以看到兩個(gè)地址是一樣的,這也就說(shuō)明Python中的傳參使用的引用傳遞!需要注意的是:對(duì)于不可變類型,在函數(shù)中對(duì)其操作并不會(huì)對(duì)原對(duì)象產(chǎn)生影響,但對(duì)于可變類型,在函數(shù)中對(duì)其操作則可能會(huì)改變其值,如下:

1)傳入的參數(shù)是不可變類型:

            
 def f(x):
   x += "666" # 這里會(huì)創(chuàng)建一個(gè)新的對(duì)象
   print(x)
 
 
 s = "777" # 字符串不可變
 print(s)
 f(s)
 print(s)
 
 # 777
 # 777666
 # 777
          

2)傳入的參數(shù)是可變類型:

            
def f(x):
   x.append(4) # 修改原對(duì)象的值
   print(x)
 
 
 s = [1, 2, 3] # 列表可變
 print(s)
 f(s)
 print(s)

# [1, 2, 3]
# [1, 2, 3, 4]
# [1, 2, 3, 4]
          

3.淺拷貝與深拷貝的那些事

  在Python中,淺拷貝與深拷貝是一定要分清楚的!對(duì)于淺拷貝和深拷貝,可以這么理解:

  1)淺拷貝:創(chuàng)建一個(gè)對(duì)象,但其中包含的是原對(duì)象中所包含項(xiàng)的引用,如果用引用的方式修改了其中的對(duì)象,就會(huì)對(duì)原對(duì)象進(jìn)行改變。

  2)深拷貝:創(chuàng)建一個(gè)對(duì)象,并且遞歸復(fù)制原對(duì)象中所包含的對(duì)象,此時(shí)修改數(shù)據(jù)不會(huì)對(duì)原對(duì)象產(chǎn)生影響。

  在下面的代碼中包含了賦值、淺拷貝和深拷貝,在Python中賦值即引用對(duì)象,所以對(duì)c操作也就是對(duì)原對(duì)象a進(jìn)行操作,對(duì)于淺拷貝對(duì)象b和d,對(duì)其中的引用進(jìn)行操作會(huì)改變對(duì)a中的對(duì)象,而對(duì)深拷貝對(duì)象e進(jìn)行操作就與原對(duì)象a無(wú)關(guān)了。

            
 import copy
 
 a = [1, [2], 3]
 b = a[:] # 使用切片操作,淺拷貝
 c = a # 賦值操作,即引用
 d = a.copy() # 淺拷貝
 e = copy.deepcopy(a) # 深拷貝
 
 b.append(4)
 c.append(5)
 d.append(6)
 d[1].append(2)
 e.append(7)
 e[1].append(3)
 
 print(a) # [1, [2, 2], 3, 5]
 print(b) # [1, [2, 2], 3, 4]
 print(c) # [1, [2, 2], 3, 5]
 print(d) # [1, [2, 2], 3, 6]
 print(e) # [1, [2, 3], 3, 7]
          

? 4.Python一行式能干嘛?

  下面是一些Python一行式的示例,從中可以看出Python是非常簡(jiǎn)潔和強(qiáng)大的!

  1)一行代碼輸出一百以內(nèi)的奇數(shù):

print([x for x in range(100) if x % 2])

  2)一行代碼求水仙花數(shù):

print([x for x in range(100, 1000) if int(str(x)[0])**3 + int(str(x)[1])**3 + int(str(x)[2])**3 == x])

  3)一行代碼打印九九乘法表:

print("".join(["{} * {} = {}\t".format(x, y, x * y) if x != y else "{} * {} = {}\n".format(x, y, x * y) for x in range(1, 10) for y in range(1, x + 1)]))

  4)一行代碼實(shí)現(xiàn)IP地址轉(zhuǎn)換,如將192.168.12.1轉(zhuǎn)換成0b11000000 10101000 00001100 00000001:

print("0b"+" ".join(("00000000" + bin(int(i)).replace("0b", ""))[-8:] for i in ip.split(".")))

  5)一行代碼求1到10的和:

from functools import reduce; print(reduce(lambda x, y: x + y, [i for i in range(1, 11)]))

? 5.下面這段代碼的結(jié)果是什么?

            
def mul():
return [lambda x: x * i for i in range(4)]


print([m(2) for m in mul()])
          

以上這段代碼輸出的結(jié)果是[6, 6, 6, 6],而不是[0, 2, 4, 6]!

  產(chǎn)生這個(gè)問(wèn)題的原因在于Python閉包的延遲綁定。這意味著內(nèi)部函數(shù)被調(diào)用時(shí),參數(shù)的值在閉包內(nèi)進(jìn)行查找。所以當(dāng)mul()返回的函數(shù)被調(diào)用時(shí),i的值會(huì)在返回的函數(shù)里查找,而for循環(huán)完成后i的值為3,也就是i最終賦值為3。因此,每次返回的函數(shù)乘以傳入的值就是最后的結(jié)果,得到的結(jié)果就是[6, 6, 6, 6]。

  如果要解決這個(gè)問(wèn)題,可以參考以下方法:

  1)使用Python生成器。

            
 def mul():
   for i in range(4):
     yield lambda x: x * i
 
 
 print([m(2) for m in mul()])
          

2)創(chuàng)造一個(gè)閉包,利用默認(rèn)函數(shù)進(jìn)行綁定。

            
 def mul():
   return [lambda x, i=i: x * i for i in range(4)]
 
 
 print([m(2) for m in mul()])
          

這篇文章先介紹到這,后期腳本之家小編會(huì)為大家分享更多的文章。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲一一在线 | 国产第一页浮力 | 特黄aaaaaa久久片 | 深夜福利一区二区 | 日韩免费视频播播 | 欧美3级 | 色爱综合网 | 中文字幕成人乱码在线电影 | 国产97人妻人人做人碰人人爽 | 日韩欧美专区 | 欧美a区 | 国产精品免费久久久免费 | 波多野结衣在线观看视频 | 久久国产亚洲观看 | 狠狠久| 国产区一区 | 欧美日韩综合一区 | 日本高清www午夜视频 | 日韩精品专区在线影院重磅 | 久久久无码精品成人A片小说 | www.久久久| 亚洲欧美另类综合 | 一级黄a | 草草免费| 一级特黄aaa大片大全 | 五月色网站 | 成年人免费网站视频 | 伊人情涩网 | 国产一级成人毛片 | 一级理伦| 亚洲免费播放 | 久操精品| 久久久亚洲欧洲日产国码606 | 在线观看中文字幕 | 欧美日韩视频一区三区二区 | 日韩欧美福利视频 | 亚洲午夜精品A片久久不卡蜜桃 | 欧美成人激情在线 | 精品国产18久久久久久二百 | 一级毛片免费观看不收费 | 亚洲综合在线另类色区奇米 |