微吼云上線多路互動直播服務(wù) 加速多場景互動直播落地
751
2025-04-01
文章目錄
第1題:閱讀下面的代碼,默讀出A0,A1至An的最終值。
第2題:如何提高python的運行效率?
第3題: Python字典有什么特點,從字典中取值,時間復(fù)雜度是多少?
第4題: 多線程、多進程?
第5題: 請盡可能列舉python列表的成員方法,并給出以下列表操作的答案:
第1題:閱讀下面的代碼,默讀出A0,A1至An的最終值。
A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5))) A1 = range(10) A2 = [i for i in A1 if i in A0] A3 = [A0[s] for s in A0] A4 = [i for i in A1 if i in A3] A5 = {i:i*i for i in A1} A6 = [[i,i*i] for i in A1]
1
2
3
4
5
6
7
默讀代碼類的題目,相對來說是比較簡單的。重點去研究列表解析,之后你就可以輕松的回答這些問題嘍~
A0 = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4} A1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] A2 = [] A3 = [1, 3, 2, 5, 4] A4 = [1, 2, 3, 4, 5] A5 = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81} A6 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
1
2
3
4
5
6
7
第2題:如何提高python的運行效率?
能用字典就不用列表:字典在索引查找和排序方面遠遠高于列表。
多用python中封裝好的模塊庫
關(guān)鍵代碼使用外部功能包(Cython,pylnlne,pypy,pyrex)
使用生成器
針對循環(huán)的優(yōu)化
盡量避免在循環(huán)中訪問變量的屬性
使用較新的Python版本
第3題: Python字典有什么特點,從字典中取值,時間復(fù)雜度是多少?
dict(中文叫字典)是另一種可變?nèi)萜髂P停铱纱鎯θ我忸愋蛯ο蟆?/p>
字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號{}中
字典的特性
查找速度快
無論dict有10個元素還是10萬個元素,查找速度都一樣。而list的查找速度隨著元素增加而逐漸下降。
不過dict的查找速度快不是沒有代價的,dict的缺點是占用內(nèi)存大,還會浪費很多內(nèi)容,list正好相反,占用內(nèi)存小,但是查找速度慢。
字典值可以沒有限制地取任何python對象,既可以是標(biāo)準(zhǔn)的對象,也可以是用戶定義的,但鍵不行。
不允許同一個鍵出現(xiàn)兩次。
鍵必須不可變,所以可以用數(shù)字,字符串或元組充當(dāng),所以用列表就不行。
dict的第二個特點就是存儲的key-value序?qū)κ菦]有順序的!這和list不一樣。
從字典中取值,時間復(fù)雜度是多少
O(1),字典是hash table實現(xiàn)
第4題: 多線程、多進程?
線程
線程是操作系統(tǒng)能夠進行運算調(diào)度的
最小單位
。它被包含在進程之中,是進程中的實際運作單位。
一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發(fā)多個線程,每條線程并行執(zhí)行不同的任務(wù)。一個線程是一個execution context(執(zhí)行上下文),即一個cpu執(zhí)行時所需要的一串指令。
進程
一個程序的
執(zhí)行實例
就是一個進程。每一個進程提供執(zhí)行程序所需的所有資源。(進程本質(zhì)上是資源的集合)
一個進程有一個虛擬的地址空間、可執(zhí)行的代碼、操作系統(tǒng)的接口、安全的上下文(記錄啟動該進程的用戶和權(quán)限等等)、唯一的進程ID、環(huán)境變量、優(yōu)先級類、最小和最大的工作空間(內(nèi)存空間),還要有
至少一個線程
。
每一個進程啟動時都會最先產(chǎn)生一個線程,即主線程 然后主線程會再創(chuàng)建其他的子線程。
進程與線程區(qū)別
轉(zhuǎn)載自互聯(lián)網(wǎng),總結(jié)的挺好的,有益!
深入的理解看這篇博客就可以了:https://www.cnblogs.com/whatisfantasy/p/6440585.html
同一個進程中的線程共享同一內(nèi)存空間,但是進程之間是獨立的。
同一個進程中的所有線程的數(shù)據(jù)是共享的(進程通訊),進程之間的數(shù)據(jù)是獨立的。
對主線程的修改可能會影響其他線程的行為,但是父進程的修改(除了刪除以外)不會影響其他子進程。
線程是一個上下文的執(zhí)行指令,而進程則是與運算相關(guān)的一簇資源。
同一個進程的線程之間可以直接通信,但是進程之間的交流需要借助中間代理來實現(xiàn)。
創(chuàng)建新的線程很容易,但是創(chuàng)建新的進程需要對父進程做一次復(fù)制。
一個線程可以操作同一進程的其他線程,但是進程只能操作其子進程。
線程啟動速度快,進程啟動速度慢(但是兩者運行速度沒有可比性)。
第5題: 請盡可能列舉python列表的成員方法,并給出以下列表操作的答案:
a=[1, 2, 3, 4, 5], a[::2]=?, a[-2:] = ?
a[::2] = [1, 3, 5], a[-2:] = [4, 5]
1
一行代碼實現(xiàn)對列表a中的偶數(shù)位置的元素進行加3后求和?
from functools import reduce a = [1, 2, 3, 4, 5] print(reduce(lambda x, y: x+y, [(x+3*((a.index(x)+1)%2)) for x in a])) # a中元素均不相同 # 或 print(reduce(lambda x, y: x+y, [a[x]+(x+1)%2*3 for x in range(0, 5)])) # 只適用于a中元素有5個情況
1
2
3
4
5
將列表a的元素順序打亂,再對a進行排序得到列表b,然后把a和b按元素順序構(gòu)造一個字典d。
from random import shuffle a = [1, 2, 3, 4, 5] # 打亂列表a的元素順序 shuffle(a) # 對a進行排序得到列表b b = sorted(a, reverse=True) # zip 并行迭代,將兩個序列“壓縮”到一起,然后返回一個元組列表,最后,轉(zhuǎn)化為字典類型。 d = dict(zip(a, b)) print(d)
1
2
3
4
5
6
7
8
9
Python 任務(wù)調(diào)度
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。