復(fù)制并輸出一個“數(shù)組”,Python 和 C++ 分別需要幾步?
Python 和 C++ 是筆者喜歡并在使用的兩種編程語言。
Python 以其開發(fā)效率著稱,而 C++ 運(yùn)行效率無疑更高一籌。
我們用一個小例子做下對比。
【題目】
已知一個數(shù)組,請復(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 來表示一個數(shù)組。使用 vector 的 assign 函數(shù)就可以實(shí)現(xiàn)復(fù)制操作,很簡單。
但是,如果要將 vector 輸出,除了使用 for 循環(huán)外,我們需要借助 STL 中的 copy 算法,才可以實(shí)現(xià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 代碼就簡單明了很多了。我們使用 list 來表示數(shù)組,可使用 list 的 extend 方法來復(fù)制一個 list。還可以使用切片語法實(shí)現(xiàn)復(fù)制。
當(dāng)然,不像 C++ 中的 vector 只能存儲同一種類型的數(shù)據(jù),Python list 可以混合存放任何類型的數(shù)據(jù)。的確方便高效!
【結(jié)語】
復(fù)制并輸出一個數(shù)組,Python 和 C++ 都可以使用短短兩行代碼來實(shí)現(xiàn)。
但是二者對于代碼編寫者的技能熟練度要求還是不同的。從易用性來講,Python 還是具有明顯優(yōu)勢的。
曾經(jīng)一句“PHP 是世界上最好的語言”就足以引起程序員之間的戰(zhàn)爭,這種爭論其實(shí)是沒有必要的。
每種語言各有所長,在不同的應(yīng)用場景下,各自都有卓越的表現(xiàn)。