婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Linux折騰記(十七):適合數(shù)值計(jì)算的語(yǔ)言需要具備什么樣的特色

Linux折騰記(十七):適合數(shù)值計(jì)算的語(yǔ)言需要具備什么樣的特色

熱門(mén)標(biāo)簽:河北語(yǔ)音電銷(xiāo)機(jī)器人 地球地圖標(biāo)注方法 河南智能電話(huà)機(jī)器人公司 商戶(hù)地圖標(biāo)注 電話(huà)機(jī)器人哪里有賣(mài)的 壽光百度地圖標(biāo)注中心網(wǎng)站 樺甸電銷(xiāo)機(jī)器人 新鄭電銷(xiāo)外呼系統(tǒng)線路 怎樣給景區(qū)加百度地圖標(biāo)注

  2015年1月,我繼續(xù)徜徉在數(shù)值計(jì)算的世界。這段時(shí)間里,我抽空看了Python科學(xué)計(jì)算和數(shù)值分析方面的書(shū),也仔細(xì)研讀了Octave的用戶(hù)手冊(cè),甚至連古老的Fortran、新興的R語(yǔ)言我都去逐一了解。對(duì)于數(shù)值計(jì)算的庫(kù),我了解了一下Boost的uBLAS,以前也用過(guò)OpenCV,當(dāng)然,了解最多的還是Python中的NumPy、SciPy和pandas。

  前幾篇隨筆搞了不少工具論,所以今天我就專(zhuān)門(mén)來(lái)論一論編程語(yǔ)言。我的這個(gè)Linux江湖系列是一會(huì)兒方法論一會(huì)兒工具論,每過(guò)一段時(shí)間也談?wù)劸幊陶Z(yǔ)言。今天談的內(nèi)容是我對(duì)適合做數(shù)值計(jì)算的編程語(yǔ)言的一些看法,主要是一些思路方面的東西,不評(píng)論具體語(yǔ)言的優(yōu)劣。另外,我是想到哪兒寫(xiě)到哪兒,如果有什么不對(duì)的地方歡迎大家指正。

一、元組和數(shù)組

  如果數(shù)值計(jì)算僅僅只是兩個(gè)標(biāo)量之間的加減乘除,那就不需要我在這里浪費(fèi)口舌了。向量啊、矩陣啊、多維數(shù)組啊什么,才是數(shù)值計(jì)算真正的主角。所以,適合做數(shù)值計(jì)算的編程語(yǔ)言必須有一個(gè)好的方式表示數(shù)組,特別是多維數(shù)組。哪種方式好呢?是這樣:


復(fù)制代碼
代碼如下:

int a[m][n][k];

還是這樣:


復(fù)制代碼
代碼如下:

int a[m,n,k];

  看似沒(méi)有什么差別,但是如果你想獲取數(shù)組a的形狀呢?比如這樣:


復(fù)制代碼
代碼如下:

? = a.shape();

或者再更進(jìn)一步,想改變數(shù)組a的形狀呢?比如這樣:


復(fù)制代碼
代碼如下:

a.reshape(?);

  在上面的代碼中,“?”究竟應(yīng)該用什么代替呢?

  如果讓我給出答案,我會(huì)說(shuō):要用元組。很多編程語(yǔ)言中都有元組的概念,比如Python。元組就是用逗號(hào)隔開(kāi)的幾個(gè)值,可以加圓括號(hào),也可以不加。我覺(jué)得加上圓括號(hào)后可讀性更好。比如(a,b)是元組,(3,4,5)也是元組。如果寫(xiě)成[3,4,5]那就是數(shù)組了,在Python中,也稱(chēng)之為列表。不過(guò)Python的列表功能比數(shù)組要強(qiáng)大,因?yàn)閿?shù)組只能保存同一種數(shù)據(jù)類(lèi)型的值,而列表可以保存任何對(duì)象。數(shù)組一般情況下不能動(dòng)態(tài)改變長(zhǎng)度,而列表可以。Octave語(yǔ)言中使用cell array這個(gè)術(shù)語(yǔ)來(lái)表示可以保存不同類(lèi)型對(duì)象的容器。Octave中的數(shù)組和矩陣是可以動(dòng)態(tài)改變長(zhǎng)度的。C語(yǔ)言的數(shù)組沒(méi)有動(dòng)態(tài)改變長(zhǎng)度這個(gè)功能,而如果使用C++的話(huà),則必須使用vector>模板類(lèi)。

  我認(rèn)為,一個(gè)好的編程語(yǔ)言必須要有“元組”這個(gè)一個(gè)概念,必須能夠用好大括號(hào)、中括號(hào)和小括號(hào)。在有沒(méi)有元組這個(gè)問(wèn)題上,很多語(yǔ)言做得不好,C語(yǔ)言沒(méi)有,C++也沒(méi)有,Java沒(méi)有,C#這個(gè)有很多新功能的語(yǔ)言也沒(méi)有,不要告訴我有Tuple>模板類(lèi)可以用,那個(gè)真的沒(méi)有語(yǔ)言?xún)?nèi)置的元組功能好。在能不能用好大中小括號(hào)這個(gè)問(wèn)題上,C語(yǔ)言就做得不好。你看它不管是初始化數(shù)組,還是初始化struct,都是用大括號(hào)。而Python和JSON就做得很好嘛,初始化數(shù)組用中括號(hào),初始化對(duì)象或字典的時(shí)候采用大括號(hào)。如果加上小括號(hào)表示元組,那就齊活兒了。

  數(shù)值計(jì)算可以針對(duì)標(biāo)量、一維數(shù)組、二維數(shù)組以及n維數(shù)組進(jìn)行。數(shù)組可以如下組織,如下圖:

  元組最大的用途就是可以用來(lái)表示數(shù)組的形狀了。比如一維數(shù)組的形狀為(n,),請(qǐng)注意其中的逗號(hào)不能省略。二維數(shù)組的形狀(m,n),三維數(shù)組的形狀(m,n,k),依次類(lèi)推。另外,元組可以用來(lái)對(duì)數(shù)組中的元素進(jìn)行索引。比如:


復(fù)制代碼
代碼如下:

a = [ [1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16] ];b = a[2,3,3];

  元組還有一個(gè)很大的用途,那就是可以讓一個(gè)函數(shù)返回多個(gè)值。C語(yǔ)言在這個(gè)方面是做得比較丑陋的,如果一個(gè)函數(shù)要返回多個(gè)值,只能給這個(gè)函數(shù)傳指針或者多重指針作為參數(shù),C++可以傳引用,C#更加畫(huà)蛇添足,專(zhuān)門(mén)有一個(gè)out關(guān)鍵字用來(lái)修飾函數(shù)的參數(shù)。微軟你真是的,你既然能想到out,你就不能想到元組嗎?常見(jiàn)的例子,比如meshgrid()函數(shù)可以同時(shí)初始化兩個(gè)數(shù)組,peak()函數(shù)可以同時(shí)初始化三個(gè)數(shù)組。你看它們用元組多方便:


復(fù)制代碼
代碼如下:

(xx, yy) = meshgrid(x, y);(xx, yy, zz) = peak();

   另外,元組還可以這樣用,比如交換兩個(gè)變量的值:


復(fù)制代碼
代碼如下:

(a,b) = (b,a);

二、數(shù)組初始化

  在數(shù)值計(jì)算中,數(shù)組的初始化也是非常重要的一環(huán)。如果像C語(yǔ)言這樣寫(xiě):


復(fù)制代碼
代碼如下:

int a[100] = {1, 2, 3, 4, ... , 100};

估計(jì)很多人是要罵娘的。這樣寫(xiě):


復(fù)制代碼
代碼如下:

for(int i=0; i100; i++){ a[i] = i+1;}

也不優(yōu)雅。我只是想初始化一個(gè)數(shù)組而已,怎么就非得要寫(xiě)一個(gè)循環(huán)呢?如果是二維數(shù)組呢,就得兩層循環(huán),三維數(shù)組就得三層。真的是太鬧心了。

  另外,如前所述,我也不喜歡在初始化數(shù)組的時(shí)候用大括號(hào)。我覺(jué)得中括號(hào)就是為數(shù)組而生。比如這樣:


復(fù)制代碼
代碼如下:

a = [1, 2, 3, 4];

這就是一個(gè)一維數(shù)組,但是如果這樣寫(xiě):


復(fù)制代碼
代碼如下:

a = [ [1, 2, 3, 4] ];

就是一個(gè)行向量。如果寫(xiě)成這樣:


復(fù)制代碼
代碼如下:

a = [ [1], [2], [3], [4] ];

那么這就是一個(gè)列向量,如下圖:

   當(dāng)然,上面的示例只有四個(gè)數(shù)字,這么寫(xiě)一寫(xiě)無(wú)可厚非。如果是很多數(shù)字呢?或者很多維的數(shù)組呢?這時(shí)就必須得用到很多初始化函數(shù)了,而且這些初始化函數(shù)最好能接受元組作為參數(shù)來(lái)決定數(shù)組的形狀。比如這樣:


復(fù)制代碼
代碼如下:

a = xrange( 1, 60, (3,4,5) ); //用1到60的數(shù)字初始化一個(gè)3*4*5的數(shù)組
b = randn ( (3, 4, 5) ); //用隨機(jī)數(shù)初始化一個(gè)3*4*5的數(shù)組

  其它的初始化函數(shù)還有l(wèi)inspace()、logspace()、ones()、zeros()、eyes()等等。這些函數(shù)還可以配合reshape()使用,比如這樣:


復(fù)制代碼
代碼如下:

c = linspace(0, 2*pi, 60).reshape(3, 4, 5);

  在所有的這些初始化中,元組都是重要的組成部分。

三、range和切片

  其實(shí),range除了可以是一個(gè)函數(shù),還可以更省點(diǎn)兒事,像這樣寫(xiě):


復(fù)制代碼
代碼如下:

r = 0:10:2; //0,2,4,6,8,10
s = 11:0:-3; //11,8,5,2

  在某些語(yǔ)言中,也把這個(gè)功能叫切片。其實(shí)就是“:”的靈活運(yùn)用,有標(biāo)點(diǎn)符號(hào)可以用當(dāng)然不能浪費(fèi)嘛。使用切片,只需要指定起始值、終止值和步長(zhǎng),就可以獲得一個(gè)數(shù)字序列。

  但是,“:”最大的用途并不是用來(lái)對(duì)數(shù)組進(jìn)行初始化,而是對(duì)數(shù)組進(jìn)行索引。比如,a是一個(gè)三維數(shù)組,可以通過(guò)切片來(lái)獲取其中的一部分?jǐn)?shù)據(jù)。見(jiàn)下面的代碼:


復(fù)制代碼
代碼如下:

a = range(1, 60).reshape(3, 4, 5); // a是一個(gè)三維數(shù)組
b = a[1, 2:3, 1:4]; // b是一個(gè)二維數(shù)組,其值為[ [12, 13, 14, 15], [17, 18, 19, 20]]

  切片除了可以指定起始值和終止值外,也可以指定步長(zhǎng)。當(dāng)然,也可以只用一個(gè)單獨(dú)的“:”,代表取這一整個(gè)軸。關(guān)于軸的概念,可以看我前面的圖片。見(jiàn)下面這樣的代碼:


復(fù)制代碼
代碼如下:

a = range(1, 60).reshape(3, 4, 5); // a是一個(gè)三維數(shù)組
b = a[1, :, :]; // b的值為二維數(shù)組[[1,2,3,4,5], [6,7,8,9,10], [11,12, 13, 14, 15], [16,17, 18, 19, 20]]

四、不寫(xiě)循環(huán)

  在對(duì)多維數(shù)組進(jìn)行加減乘除的時(shí)候,如果使用傳統(tǒng)的像C這樣的語(yǔ)言,則避免不了要寫(xiě)循環(huán)。比如要計(jì)算兩個(gè)多維數(shù)組的加法,不得不寫(xiě)這樣的代碼:


復(fù)制代碼
代碼如下:

m = 10;
n = 20;
k = 30;
a = randn(m, n, k); //形狀為(m, n, k)的三維數(shù)組,初始化為隨機(jī)值
b = randn(m, n, k); //形狀為(m, n, k)的三維數(shù)組,初始化為隨機(jī)值
for(int i=0; im; i++){
for(int j=0; jn; j++){
for(int p=0; pk; p++){
c[i, j, p] = a[i, j, p] + b[i, j, p];
}
}
}

  上面的代碼當(dāng)然遠(yuǎn)不如下面這樣的代碼簡(jiǎn)潔:


復(fù)制代碼
代碼如下:

C = A + B;

  所以不寫(xiě)循環(huán)基本上就成了所有數(shù)值計(jì)算語(yǔ)言的標(biāo)準(zhǔn)配置。Matlab和Octave是這樣,NumPy是這樣,R語(yǔ)言也是這樣。C++也在追求這樣,因?yàn)镃++中有運(yùn)算符重載的功能,所以可以對(duì)矩陣類(lèi)重載加減乘除運(yùn)算符。但是C++中運(yùn)算符的基礎(chǔ)設(shè)施有缺陷,比如它沒(méi)有乘方運(yùn)算符(冪運(yùn)算符),在Octave和NumPy中,都可以這樣計(jì)算$x^y$:x**y。但是在C++中,只有使用函數(shù)power(x, y)。不要想^運(yùn)算符,它是一個(gè)位運(yùn)算符,所以取冪只有使用**了。另外,多維數(shù)組運(yùn)算還有特例,比如二維數(shù)組之間加減乘除,既可以是逐元素的加減乘除,也可以是矩陣的加減乘除。向量計(jì)算也有特例,既可以是逐元素加減乘除,也可能是向量?jī)?nèi)積(點(diǎn)乘)。如果正好是長(zhǎng)度為3的向量,還可以計(jì)算叉乘。這些運(yùn)算符都需要重新定義,所以雖然C++有重載運(yùn)算符的機(jī)制,但是因?yàn)檫@些運(yùn)算符完全超越了C++的基礎(chǔ)設(shè)施,所以C++也沒(méi)有辦法寫(xiě)得很優(yōu)雅。

  不寫(xiě)循環(huán)還有一個(gè)優(yōu)點(diǎn),那就是可以對(duì)運(yùn)算速度進(jìn)行優(yōu)化。優(yōu)化是編譯器或解釋器的責(zé)任,寫(xiě)數(shù)值計(jì)算程序的人可以完全不用費(fèi)心。編譯器或解釋器可采取的優(yōu)化方式有可能是利用SSE等多媒體指令集,也可能是發(fā)揮多核CPU的多線程優(yōu)勢(shì),甚至是使用GPGPU計(jì)算都有可能。如果用戶(hù)非要寫(xiě)成C語(yǔ)言那樣的循環(huán),而他又不會(huì)內(nèi)聯(lián)匯編或OpenMP的話(huà),那么就談不上什么運(yùn)算速度的優(yōu)化了。

五、廣播

  不寫(xiě)循環(huán),直接把兩個(gè)多維數(shù)組進(jìn)行加減乘除當(dāng)然省事。但是如果兩個(gè)數(shù)組的形狀不一樣呢?比如一個(gè)二維數(shù)組加一個(gè)行向量,或一個(gè)二維數(shù)組加一個(gè)列向量,甚至是數(shù)組加減乘除一個(gè)標(biāo)量,會(huì)出現(xiàn)什么情況呢?

  不用擔(dān)心,在面向數(shù)值計(jì)算的語(yǔ)言中,一般都有“廣播”這樣一個(gè)特性。當(dāng)兩個(gè)數(shù)組的形狀不一樣時(shí),形狀比較小的那個(gè)往往可以在長(zhǎng)度為1的維度上進(jìn)行廣播。如下圖:

六、奇異索引

  Fancy indexing,有的書(shū)上翻譯成花式索引,但我認(rèn)為叫奇異索引比較好。它就是指一個(gè)低維的數(shù)組,可以使用高維的數(shù)組進(jìn)行索引,最后得到的結(jié)果是一個(gè)高維的數(shù)組。如果索引中含有切片,可能會(huì)得到一個(gè)更高維度的數(shù)組作為結(jié)果。

  這個(gè)概念理解起來(lái)比較難。特別是再配合切片使用,更加增加其復(fù)雜性。所謂一圖勝千言,先看普通索引的情況:

   前面提到,對(duì)多維數(shù)組進(jìn)行索引的時(shí)候需要用到元組,元組的長(zhǎng)度等同于數(shù)組的維數(shù)。對(duì)于普通索引而言,元組的各個(gè)部分要么是整數(shù),要么是切片。而對(duì)于奇異索引而言,索引元組的各個(gè)組成部分都可能是多維數(shù)組或者切片。如果是多維數(shù)組,則最后得到的數(shù)組的形狀和索引數(shù)組的形狀相同,如果配合切片,則可能得到更高維的數(shù)組。如下圖:

七、函數(shù)調(diào)用

  編程語(yǔ)言發(fā)展這么多年,一直在進(jìn)化,也一直在相互靠攏。對(duì)于一個(gè)編程語(yǔ)言來(lái)說(shuō),是應(yīng)該面向過(guò)程還是面向?qū)ο螅渴庆o態(tài)類(lèi)型還是動(dòng)態(tài)類(lèi)型?這些都是值得思考的地方。但是在函數(shù)調(diào)用方面,有一些思想倒是可以學(xué)習(xí)。

  在C語(yǔ)言這樣比較古老的語(yǔ)言中,對(duì)于函數(shù)的參數(shù)來(lái)說(shuō),只有位置參數(shù)一種。也就是說(shuō),像一個(gè)函數(shù)傳遞參數(shù)的時(shí)候,只能正確的參數(shù)放到正確的位置,而且參數(shù)的個(gè)數(shù)必須和函數(shù)定義的相同。這是最原始的函數(shù)調(diào)用思想。

  緊接著,在某些編程語(yǔ)言如Java、C#中,有了可選參數(shù)這個(gè)概念。但是可選參數(shù)要放到參數(shù)列表的最后面,而且必須提供默認(rèn)值。當(dāng)調(diào)用函數(shù)時(shí)如果指定了這個(gè)參數(shù),則使用調(diào)用時(shí)指定的值,否則使用默認(rèn)值。

  但是我覺(jué)得適合數(shù)值計(jì)算的語(yǔ)言必須還得更進(jìn)一步,提供關(guān)鍵字參數(shù)的功能。什么是關(guān)鍵字參數(shù)呢?比如對(duì)數(shù)據(jù)進(jìn)行繪圖的時(shí)候,需要指定線型、標(biāo)簽、標(biāo)題等各種屬性,可以這樣調(diào)用函數(shù):


復(fù)制代碼
代碼如下:

plot(x, y, marker="*", color="r", linestyle="-", title="...", legend="...", xlabel="...", ylabel="...");

  每一個(gè)參數(shù)調(diào)用的時(shí)候都可以指定它的名字,這樣我們就不用去死記各個(gè)參數(shù)的位置,是不是很方便呢?

八、生態(tài)環(huán)境

  對(duì)于一門(mén)編程語(yǔ)言而言,生態(tài)壞境很重要。在數(shù)值計(jì)算領(lǐng)域更是如此。因?yàn)楹芏鄶?shù)值計(jì)算的庫(kù)都是專(zhuān)業(yè)的人士寫(xiě)給專(zhuān)業(yè)人士看的,比如物理專(zhuān)業(yè)的寫(xiě)物理領(lǐng)域的算法,氣象專(zhuān)業(yè)的寫(xiě)氣象專(zhuān)業(yè)的算法,所以不大可能有一個(gè)全面的官方的,像C或C++這樣一個(gè)由ANSI定義的庫(kù)。

  廣泛接受開(kāi)源社區(qū)的貢獻(xiàn)是一個(gè)比較好的辦法。Perl是這樣,Python也是這樣,新興的R語(yǔ)言也是這樣。Perl有CPAN,Python有PyPI,R語(yǔ)言也有CRAN。至于Matlab,那更是有各種各樣的工具包。

  OK,就寫(xiě)這么多吧,還有其它的一些什么特色,我想到后再隨時(shí)更新此文。

  另外,本文中所有的圖片都是在Ubuntu中使用Inkscape矢量圖軟件繪制而成。

標(biāo)簽:荊州 遼陽(yáng) 來(lái)賓 楚雄 忻州 淄博 迪慶 阜陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux折騰記(十七):適合數(shù)值計(jì)算的語(yǔ)言需要具備什么樣的特色》,本文關(guān)鍵詞  Linux,折騰,記,十七,適合,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux折騰記(十七):適合數(shù)值計(jì)算的語(yǔ)言需要具備什么樣的特色》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Linux折騰記(十七):適合數(shù)值計(jì)算的語(yǔ)言需要具備什么樣的特色的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久久亚洲精品一区二区三区 | 2023国产精品| 91精品福利在线一区二区三区 | 在线电影一区二区三区| 日韩一级片在线观看| 精品久久久久香蕉网| 亚洲私人黄色宅男| 免费视频一区二区| 国产91精品一区二区| 91免费看片在线观看| 制服丝袜av成人在线看| 国产精品污www在线观看| 亚洲成av人片在线观看无码| 国产一区二区在线视频| 在线视频你懂得一区| 久久久精品国产免大香伊| 亚洲女同ⅹxx女同tv| 国内精品免费在线观看| 欧美伊人久久久久久久久影院| 久久久国产午夜精品| 婷婷国产在线综合| 99久久国产免费看| 日韩欧美国产系列| 一个色妞综合视频在线观看| 国产精品综合av一区二区国产馆| 欧美日韩中字一区| 国产精品久久久久久久久免费樱桃| 青青草97国产精品免费观看无弹窗版| 97成人超碰视| 欧美国产1区2区| 久久国产精品99久久久久久老狼| 欧美午夜电影在线播放| ...xxx性欧美| 成人黄色免费短视频| 精品成人在线观看| 日本免费新一区视频| 在线观看www91| 成人欧美一区二区三区黑人麻豆 | 久久影音资源网| 婷婷中文字幕一区三区| 91美女精品福利| 国产精品福利一区| 国产91精品露脸国语对白| 欧美一二三区精品| 日韩主播视频在线| 欧美人xxxx| 一区二区三区欧美| 色88888久久久久久影院野外| 国产精品色婷婷久久58| 国产+成+人+亚洲欧洲自线| 欧美v国产在线一区二区三区| 亚洲444eee在线观看| 在线观看日韩毛片| 亚洲欧美日韩电影| 色狠狠桃花综合| 亚洲男同性恋视频| 91日韩精品一区| 亚洲特级片在线| 91在线无精精品入口| 亚洲精品欧美二区三区中文字幕| 9i看片成人免费高清| 亚洲视频1区2区| 在线一区二区视频| 天天色 色综合| 欧美一区二区播放| 精品一二线国产| 国产日韩av一区二区| 成人精品国产一区二区4080| 日韩一区中文字幕| 91浏览器打开| 亚洲第一在线综合网站| 日韩欧美在线网站| 国产精品69毛片高清亚洲| 国产精品视频你懂的| 99久久99久久精品免费观看| 国产精品国产三级国产| 欧美在线观看禁18| 三级不卡在线观看| 精品99999| 不卡免费追剧大全电视剧网站| 久久综合九色综合97_久久久| 精品一区二区三区在线播放 | 久久国产精品免费| 精品播放一区二区| 99久久99久久精品国产片果冻| 亚洲宅男天堂在线观看无病毒| 宅男在线国产精品| 国产一区日韩二区欧美三区| 中文字幕中文字幕在线一区| 91精彩视频在线观看| 日韩福利视频导航| 久久夜色精品国产欧美乱极品| 99久久99久久久精品齐齐| 亚洲成人免费影院| 国产情人综合久久777777| 欧美三级电影一区| 国产精品亚洲第一区在线暖暖韩国 | 黄网站免费久久| 亚洲视频在线一区二区| 日韩精品一区在线| 99国产精品久久久| 美国精品在线观看| 亚洲欧美乱综合| 日韩久久精品一区| 在线精品视频小说1| 激情综合网av| 亚洲国产日韩一级| 国产精品伦一区二区三级视频| 在线播放亚洲一区| 99久久久国产精品免费蜜臀| 开心九九激情九九欧美日韩精美视频电影 | 欧美高清在线精品一区| 666欧美在线视频| 色综合视频在线观看| 极品少妇一区二区| 日日骚欧美日韩| 亚洲综合在线视频| 国产精品久久久久影院老司| 精品少妇一区二区三区视频免付费 | 丝袜美腿亚洲综合| 亚洲精品自拍动漫在线| 国产精品区一区二区三区| 欧美r级在线观看| 欧美一级专区免费大片| 欧美视频在线一区| 91精品福利在线| 不卡区在线中文字幕| 国产激情视频一区二区三区欧美| 蜜臀a∨国产成人精品| 天天av天天翘天天综合网| 一区二区视频免费在线观看| 国产精品对白交换视频| 日本一区二区在线不卡| 精品va天堂亚洲国产| 日韩欧美一卡二卡| 日韩亚洲国产中文字幕欧美| 欧美一区二区三区视频免费播放 | 色哟哟欧美精品| 99国产精品久久| av中文一区二区三区| 丁香亚洲综合激情啪啪综合| 国产最新精品免费| 国产精品一区免费视频| 国产精品自拍av| 国产91丝袜在线播放0| 国产精品综合久久| 国产成人av网站| 99久久久精品| 在线免费观看日本一区| 欧美一a一片一级一片| 欧美日韩www| 精品入口麻豆88视频| 久久午夜色播影院免费高清| 欧美激情艳妇裸体舞| 亚洲欧洲av一区二区三区久久| 一区二区三区美女视频| 亚洲国产精品久久人人爱蜜臀| 视频一区二区欧美| 狠狠色丁香婷婷综合| 粉嫩av一区二区三区| 色婷婷av一区二区三区大白胸| 欧美三级三级三级爽爽爽| 欧美电影免费观看高清完整版在线观看| 精品少妇一区二区三区免费观看 | 日韩国产欧美一区二区三区| 热久久一区二区| 国产成人丝袜美腿| 91久久精品一区二区三| 国产精品对白交换视频| 日韩欧美国产精品一区| 久久男人中文字幕资源站| 欧美国产亚洲另类动漫| 国产精品成人一区二区艾草| 一区二区三区四区精品在线视频| 亚洲国产毛片aaaaa无费看| 热久久免费视频| 成人av在线网| 精品视频在线免费| 26uuu国产日韩综合| 一区在线观看视频| 日韩和欧美一区二区| 粉嫩绯色av一区二区在线观看| 色悠悠亚洲一区二区| 精品国产区一区| 亚洲美女在线国产| 蜜桃视频一区二区三区| 粉嫩绯色av一区二区在线观看| 欧美四级电影在线观看| 国产性做久久久久久| 亚洲一区电影777| 国产激情91久久精品导航| 欧美麻豆精品久久久久久| 中文字幕久久午夜不卡| 水野朝阳av一区二区三区| 成人午夜电影久久影院| 日韩欧美亚洲国产精品字幕久久久| 国产精品传媒视频| 精品一区二区三区蜜桃| 欧美日产国产精品| 国产精品不卡在线|