復(fù)制并輸出一個(gè)“數(shù)組”,Python 和 C++ 分別需要幾步?
Python 和 C++ 是筆者喜歡并在使用的兩種編程語(yǔ)言。
Python 以其開(kāi)發(fā)效率著稱(chēng),而 C++ 運(yùn)行效率無(wú)疑更高一籌。
我們用一個(gè)小例子做下對(duì)比。
【題目】
已知一個(gè)數(shù)組,請(qǐng)復(fù)制并輸出此數(shù)組的一份拷貝。
我們分別用 C++ 和 Python 進(jìn)行實(shí)現(xiàn)。
【C++ 版】
- #include <vector>
- #include <iostream>
- #include <iterator>
- using namespace std;
- int main()
- {
- vector<int> v1 = {1, 2, 3, 4, 5};
- vector<int> v2;
- v2.assign(v1.begin(), v1.end());
- copy(v2.begin(), v2.end(), ostream_iterator<int>(cout, " "));
- return 0;
- }
C++ 可以使用 STL 中的 vector 來(lái)表示一個(gè)數(shù)組。使用 vector 的 assign 函數(shù)就可以實(shí)現(xiàn)復(fù)制操作,很簡(jiǎn)單。
但是,如果要將 vector 輸出,除了使用 for 循環(huán)外,我們需要借助 STL 中的 copy 算法,才可以實(shí)現(xiàn)簡(jiǎn)短優(yōu)雅的輸出,而這其中又牽涉到 ostream_iterator 這樣的并不經(jīng)常使用的特性。
【Python 版】
- alst = [1, 2, 3, 4, 5]
- blst = []
- blst.extend(alst)
- print(blst)
- #更 Pythonic
- clst = []
- clst[:] = alst
- print(clst)
Python 代碼就簡(jiǎn)單明了很多了。我們使用 list 來(lái)表示數(shù)組,可使用 list 的 extend 方法來(lái)復(fù)制一個(gè) list。還可以使用切片語(yǔ)法實(shí)現(xiàn)復(fù)制。
當(dāng)然,不像 C++ 中的 vector 只能存儲(chǔ)同一種類(lèi)型的數(shù)據(jù),Python list 可以混合存放任何類(lèi)型的數(shù)據(jù)。的確方便高效!
【結(jié)語(yǔ)】
復(fù)制并輸出一個(gè)數(shù)組,Python 和 C++ 都可以使用短短兩行代碼來(lái)實(shí)現(xiàn)。
但是二者對(duì)于代碼編寫(xiě)者的技能熟練度要求還是不同的。從易用性來(lái)講,Python 還是具有明顯優(yōu)勢(shì)的。
曾經(jīng)一句“PHP 是世界上最好的語(yǔ)言”就足以引起程序員之間的戰(zhàn)爭(zhēng),這種爭(zhēng)論其實(shí)是沒(méi)有必要的。
每種語(yǔ)言各有所長(zhǎng),在不同的應(yīng)用場(chǎng)景下,各自都有卓越的表現(xiàn)。