精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

5分鐘解讀Python中的鏈式調用

開發 后端
如果你是有打算從事有關數據分析或者數據挖掘的等數據科學領域的工作,或者和我一樣目前就是從事相關領域的工作,那么「鏈式調用」對我們而言是一門必修課。

 [[324757]]

如果你是有打算從事有關數據分析或者數據挖掘的等數據科學領域的工作,或者和我一樣目前就是從事相關領域的工作,那么「鏈式調用」對我們而言是一門必修課。

為什么是鏈式調用?

鏈式調用,或者也可以稱為方法鏈(Method Chaining),從字面意思上來說就是將一些列的操作或函數方法像鏈子一樣穿起來的 Code 方式。

我最開始感知鏈式調用的「美」,還要從使用 R 語言的管道操作符開始。 

  1. library(tidyverse) 
  2. mtcars %>%   
  3.   group_by(cyl) %>%   
  4.   summarise(meanmeanOfdisp = mean(disp)) %>%   
  5.   ggplot(aes(x=as.factor(cyl), y=meanOfdispfill=as.factor(seq(1,3))))+  
  6.   geom_bar(stat = 'identity') +   
  7.   guides(fill=F

對于 R user 來說,對于這一段代碼很快就能明白整個流程步驟是怎樣的。這一切都是通過符號%>%(管道操作符)談起。

通過管道操作符,我們可以將左邊事物傳遞給下一個事物。這里我將mtcars數據集傳遞到group_by 函數中,然后將得到后的結果再傳遞到summarize函數,最后傳遞到ggplot函數中進行可視化繪制。

如果我沒有學會鏈式調用,那么最開始學習 R 語言的我一定是這樣寫: 

  1. library(tidyverse)  
  2. cyl4 <- mtcars[which(mtcars$cyl==4), ]  
  3. cyl6 <- mtcars[which(mtcars$cyl==6), ]  
  4. cyl8 <- mtcars[which(mtcars$cyl==8), ]  
  5. data <- data.frame(  
  6.   ccyl = c(4, 6, 8),  
  7.   meanOfdisp = c(mean(cyl4$disp), mean(cyl6$disp), mean(cyl8$disp))  
  8.  
  9. graph <- ggplot(datadata=data, aes(x=factor(cyl), y=meanOfdisp,   
  10.                                fill = as.factor(seq(1,3))))   
  11. graph <- graph + geom_bar(stat = 'identity') + guides(fill=F 
  12. graph 

如果不使用管道操作符,那么我將會進行不必要的賦值,并且覆蓋原有的數據對象,但其實當中產生的cyl#、data 其實最后都只是為graph 這一張圖片所服務的,因此導致的問題就是代碼會變得冗余。

鏈式調用在極大程度簡潔代碼的同時,也提高了代碼的可讀性,能夠很快速地了解到每一步都是在做什么。這種方式對于做數據分析或處理數據時是十分有用,減少創建不必要的變量時,能夠以快速、簡單的方式進行探索。

你能在很多地方見到鏈式調用或者管道操作的身影,這里我舉除了 R 語言以外的兩個典型例子。

一個是 Shell 語句: 

  1. echo "`seq 1 100`" | grep -e "^[3-4].*" | tr "3" "*" 

在 shell 語句中使用「|」管道操作符能夠快速地實現鏈式調用,這里我首先是打印1-100的所有整數,然后將其傳入到grep方法中,提取由 3 或 4 開頭的所有部分,再將這部分傳入到tr 方法中,并對數字包含 3 的部分用星號替換。結果如下:

另外一個是 Scala 語言: 

  1. object Test {  
  2.   def main(args: Array[String]): Unit = {  
  3.     val numOfseq = (1 to 100).toList  
  4.     val chain = numOfseq.filter(_%2==0)  
  5.       .map(_*2)  
  6.       .take(10)  
  7.   }  

在這段示例中,首先numOfseq 這個變量包含了從 1-100 的所有整數,然后從chain部分開始,我首先在numOfseq的基礎上調用了filter 方法,用以篩選這些數字中為偶數的部分,其次在調用map 方法,將這些被篩選出來的數乘以 2,最后使用take 方法從新構成的數字中取出前 10 個數,這些數共同賦值給了chain 變量。

通過以上的敘述,相信你能對鏈式調用有一個初步的印象,但是一旦你掌握了鏈式調用,那么除了會讓你的代碼風格有所改變以外,你的編程思維也會有不一樣的提升。

Python 中的鏈式調用

在 Python 中實現一個簡單的鏈式調用就是通過構建類方法并返回對象自身或返回歸屬類(@classmethod) 

  1. class Chain:  
  2.     def __init__(self, name):  
  3.         self.name = name  
  4.     def introduce(self):  
  5.         print("hello, my name is %s" % self.name)  
  6.         return self  
  7.     def talk(self):  
  8.         print("Can we make a friend?")  
  9.         return self  
  10.     def greet(self):  
  11.         print("Hey! How are you?")  
  12.         return self 
  13. if __name__ == '__main__':  
  14.     chain = Chain(name = "jobs" 
  15.     chain.introduce()  
  16.     print("-"*20)  
  17.     chain.introduce().talk()  
  18.     print("-"*20)  
  19.     chain.introduce().talk().greet() 

在這里我們創建一個Chain 類,需要傳遞一個name 字符串參數進行實例對象的創建;當中這個類里有三個方法,分別是introduce、talk以及greet。

由于每次返回的是self 自身,那么我們就可以源源不斷地調用對象歸屬類中的方法,結果如下: 

  1. hello, my name is jobs  
  2. --------------------  
  3. hello, my name is jobs  
  4. Can we make a friend?  
  5. --------------------  
  6. hello, my name is jobs  
  7. Can we make a friend?  
  8. Hey! How are you? 

在 Pandas 中使用鏈式調用

前面鋪墊了這么多終于談到有關于 Pandas 鏈式調用部分

Pandas 中的大部分方法都很適合使用鏈式方法進行操作,因為經過 API 處理后返回的往往還是 Series 類型或 DataFrame 類型,所以我們可以直接就調用相應的方法,這里我以我在今年 2 月份左右給別人做案例演示時爬取到的華農兄弟 B 站視頻數據為例。可以通過鏈接進行獲取。

數據字段信息如下所示,里面有 300 條數據,并且 20 個字段:

字段信息

但在使用這部分數據之前,我們還需要對這部分數據進行初步的清洗,這里我主要選取了以下字段:

  •  aid:視頻對應的 av 號
  •  comment:評論數
  •  play:播放量
  •  title:標題
  •  video_review:彈幕數
  •  created:上傳日期
  •  length:視頻時長

1、數據清洗

各字段對應的值如下所示:

字段值

從數據中我們可以看到:

  1.  title 字段前面都會帶有「華農兄弟」四個字,如果對標題字數進行統計時需要預先去除;
  2.  created 上傳日期似乎顯示成了一長串的數值,但其實是從 1970 至今的時間戳,我們需要處理成可讀懂的年月日形式;
  3.  length 播放量長度只顯示了分秒,但是小時并未用「00」來進行補全,因此這里我們一方面需要將其補全,另一方面要將其轉換成對應的時間格式

鏈式調用操作如下: 

  1. import re  
  2. import pandas as pd  
  3. # 定義字數統計函數 
  4. def word_count(text):  
  5.     return len(re.findall(r"[\u4e00-\u9fa5]", text))  
  6. tidy_data = (  
  7.     pd.read_csv('~/Desktop/huanong.csv')  
  8.         .loc[:, ['aid', 'title', 'created', 'length',   
  9.                  'play', 'comment', 'video_review']]  
  10.         .assign(title = lambda df: df['title'].str.replace("華農兄弟:", ""),   
  11.                 title_count = lambda df: df['title'].apply(word_count),  
  12.                 created = lambda df: df['created'].pipe(pd.to_datetime, unit='s'),   
  13.                 created_date = lambda df: df['created'].dt.date,  
  14.                 length = lambda df: "00:" + df['length'],  
  15.                 video_length = lambda df: df['length'].pipe(pd.to_timedelta).dt.seconds  
  16.                 )  

這里首先是通過loc方法挑出其中的列,然后調用assign方法來創建新的字段,新的字段其字段名如果和原來的字段相一致,那么就會進行覆蓋,從assign中我們可以很清楚地看到當中字段的產生過程,同lambda 表達式進行交互:

1.title 和title_count:

  •  原有的title字段因為屬于字符串類型,可以直接很方便的調用str.* 方法來進行處理,這里我就直接調用當中的replace方法將「華農兄弟:」字符進行清洗
  •  基于清洗好的title 字段,再對該字段使用apply方法,該方法傳遞我們前面實現定義好的字數統計的函數,對每一條記錄的標題中,對屬于\u4e00到\u9fa5這一區間內的所有 Unicode 中文字符進行提取,并進行長度計算

2.created和created_date:

  •  對原有的created 字段調用一個pipe方法,該方法會將created 字段傳遞進pd.to_datetime 參數中,這里需要將unit時間單位設置成s秒才能顯示出正確的時間,否則仍以 Unix 時間錯的樣式顯示
  •  基于處理好的created 字段,我們可以通過其屬于datetime64 的性質來獲取其對應的時間,這里 Pandas 給我們提供了一個很方便的 API 方法,通過dt.*來拿到當中的屬性值

3.length 和video_length:

  •  原有的length 字段我們直接讓字符串00:和該字段進行直接拼接,用以做下一步轉換
  •  基于完整的length時間字符串,我們再次調用pipe方法將該字段作為參數隱式傳遞到pd.to_timedelta方法中轉化,然后同理和create_date字段一樣獲取到相應的屬性值,這里我取的是秒數。

2、播放量趨勢圖

基于前面稍作清洗后得到的tidy_data數據,我們可以快速地做一個播放量走勢的探索。這里我們需要用到created這個屬于datetime64的字段為 X 軸,播放量play 字段為 Y 軸做可視化展示。 

  1. # 播放量走勢  
  2. %matplotlib inline  
  3. %config InlineBackend.figure_format = 'retina'  
  4. import matplotlib.pyplot as plt  
  5. (tidy_data[['created', 'play']]  
  6.  .set_index('created')  
  7.  .resample('1M')  
  8.  .sum()  
  9.  .plot(  
  10.     kind='line' 
  11.     figsize=(16, 8),   
  12.     title='Video Play Prend(2018-2020)',   
  13.     grid=True,   
  14.     legend=False  
  15.   )  
  16.  
  17. plt.xlabel("")  
  18. plt.ylabel('The Number Of Playing') 

這里我們將上傳日期和播放量兩個選出來后,需要先將created設定為索引,才能接著使用resample重采樣的方法進行聚合操作,這里我們以月為統計顆粒度,對每個月播放量進行加總,之后再調用plot 接口實現可視化。

鏈式調用的一個小技巧就是,可以利用括號作用域連續的特性使整個鏈式調用的操作不會報錯,當然如果不喜歡這種方式也可以手動在每條操作后面追加一個\符號,所以上面的整個操作就會變成這樣: 

  1. tidy_data[['created', 'play']] \  
  2.  .set_index('created') \  
  3.  .resample('1M')  
  4.  .sum()  
  5.  .plot( \  
  6.     kind='line', \  
  7.     figsize=(16, 8), \  
  8.     title='Video Play Prend(2018-2020)', \  
  9.     grid=True, \  
  10.     legend=False \  
  11.   ) 

但是相比于追加一對括號來說,這種尾部追加\符號的方式并不推薦,也不優雅。

但是如果既沒有在括號作用域或未追加\ 符號,那么在運行時 Python 解釋器就會報錯。

3、鏈式調用性能

通過前兩個案例我們可以看出鏈式調用可以說是比較優雅且快速地能實現一套數據操作的流程,但是鏈式調用也會因為不同的寫法而存在性能上的差異。

這里我們繼續基于前面的tidy_data操作,這里我們基于created_date 來對play、comment和video_review進行求和后的數值進一步以 10 為底作對數化。最后需要得到以下結果:

統計表格

寫法一:一般寫法

一般寫法

這種寫法就是基于tidy_data拷貝后進行操作,操作得到的結果會不斷地覆蓋原有的數據對象

寫法二:鏈式調用寫法

鏈式調用寫法

可以看到,鏈式調用的寫法相比于一般寫法而言會快上一點,不過由于數據量比較小,因此二者時間的差異并不大;但鏈式調用由于不需要額外的中間變量已經覆蓋寫入步驟,在內存開銷上會少一些。

結尾:鏈式調用的優劣

從本文的只言片語中,你能領略到鏈式調用使得代碼在可讀性上大大的增強,同時以盡肯能少的代碼量去實現更多操作。

當然,鏈式調用并不算是完美的,它也存在著一定缺陷。比如說當鏈式調用的方法超過 10 步以上時,那么出錯的幾率就會大幅度提高,從而造成調試或 Debug 的困難。比如這樣: 

  1. (data  
  2.   .method1(...)  
  3.   .method2(...)  
  4.   .method3(...)  
  5.   .method4(...)  
  6.   .method5(...)  
  7.   .method6(...)  
  8.   .method7(...) # Something Error  
  9.   .method8(...)  
  10.   .method9(...)  
  11.   .method10(...)  
  12.   .method11(...)  

你只能從鏈式調用方法體中「從尾倒頭」一步一步地去重現發生問題的地方在哪。

因此使用鏈式調用時,一定必須要考慮以下問題:

  1.  是否需要中間變量
  2.  操作數據中的步驟是否需要分解
  3.  每次操作后的結果是否仍為 DataFrame 類型

如果不需要中間變量、步驟不需要分解且保證最后返回的就是 DataFrame 類型,那么就愉快地使用鏈式調用方法來完成你的數據流程吧! 

 

責任編輯:龐桂玉 來源: Python中文社區
相關推薦

2020-12-01 12:44:44

PythonHook鉤子函數

2014-08-08 09:30:04

android scrollview

2012-06-28 10:26:51

Silverlight

2020-12-17 10:00:16

Python協程線程

2021-03-12 09:45:00

Python關聯規則算法

2021-01-29 11:25:57

Python爬山算法函數優化

2020-09-14 11:30:26

HTTP3運維互聯網

2021-04-30 16:23:58

WebRTC實時音頻

2021-01-29 11:43:53

SSHLinux命令

2020-11-24 11:50:52

Python文件代碼

2021-01-27 18:15:01

Docker底層宿主機

2009-11-26 11:19:52

NIS服務器

2011-07-11 09:58:52

2010-11-03 11:01:05

求職面試

2020-11-23 16:23:59

CSS設計技術

2020-02-17 13:45:27

抓取代碼工具

2020-05-15 07:30:08

黑客Thunderbolt漏洞

2020-12-07 11:23:32

Scrapy爬蟲Python

2021-03-23 15:35:36

Adam優化語言

2018-05-17 09:15:25

Linux發行版root密碼
點贊
收藏

51CTO技術棧公眾號

国产精品福利观看| 国产婷婷成人久久av免费高清| 自拍偷拍视频在线| 亚洲精品视频网| 老司机午夜精品视频| 日韩在线免费高清视频| 中文字幕人妻熟女在线| 成人做爰视频www网站小优视频| 国产精品久久久久久福利一牛影视 | 你懂的亚洲视频| 日韩av网站在线| 九九久久久久久| 校园春色亚洲| 一区二区视频在线| 日韩资源av在线| 日本免费网站在线观看| 久久精品999| 全球成人中文在线| 国产中文字幕免费| 99re6这里只有精品| 日韩高清a**址| 日本一二三区在线| 澳门av一区二区三区| 亚洲成人精品影院| 欧美亚洲视频一区| 国产专区在线| www.欧美日韩国产在线| 成人免费视频网| 国产裸体美女永久免费无遮挡| 亚洲清纯自拍| 色综合久久中文字幕综合网小说| 日韩av片在线| 欧美人妖在线| 日韩久久精品成人| 国产精品久久久久久在线观看| 97色婷婷成人综合在线观看| 色先锋aa成人| 精品一卡二卡三卡| 国产理论在线| 亚洲成人动漫在线观看| 性一交一乱一伧国产女士spa| 久操视频在线观看| 国产欧美日韩亚州综合| 日韩欧美亚洲日产国| 亚洲AV第二区国产精品| 不卡av电影在线播放| 97欧洲一区二区精品免费| 一区二区三区日| 免费在线成人网| 国产精品久久77777| 中文字幕精品视频在线观看| 久久aⅴ乱码一区二区三区| 91av视频导航| 在线观看日韩中文字幕| 另类av一区二区| 欧美有码在线视频| 4438国产精品一区二区| 乱人伦精品视频在线观看| 2019中文字幕在线免费观看| 欧美日韩综合在线观看| 蜜桃av一区| 国产精品福利小视频| 国产情侣免费视频| 蜜臀av一区二区在线免费观看| 国产精品久久久久久久久久久不卡| 波多野结衣一区二区三区四区| 日韩在线一区二区三区| 国产精品欧美久久久| 在线观看一二三区| 激情综合网激情| 91久久国产自产拍夜夜嗨| 亚洲黄色在线免费观看| 97se狠狠狠综合亚洲狠狠| 欧美一区二区三区四区夜夜大片| 成年人在线观看| 中文字幕日本不卡| 久久久久久免费看| 日本成人三级电影| 51精品国自产在线| 中文字幕乱视频| 欧美日韩xxxx| 久久国产精品视频| 日韩精品在线免费看| 三级欧美在线一区| 亚洲iv一区二区三区| 人妻丰满熟妇av无码区hd| 国产三级精品在线| 欧美精品一区二区性色a+v| 大桥未久在线播放| 欧美三级视频在线| 91精品人妻一区二区三区四区| 久久久久97| 中文字幕欧美日韩精品| 久久久久无码国产精品| 久久字幕精品一区| 91免费看网站| 人妻久久一区二区| 国语对白在线播放| 我不卡影院28| 91爱爱小视频k| 中文字幕你懂的| 高清久久久久久| 性高潮久久久久久久久| 美女网站视频在线| 日日噜噜夜夜狠狠视频欧美人| 欧美成人女星排行榜| 草草影院第一页| 亚洲综合色网| 日本人成精品视频在线| www.成人精品| 国产亚洲精品aa午夜观看| 狠狠精品干练久久久无码中文字幕 | 在线观看av日韩| 第四色在线一区二区| 色久欧美在线视频观看| 超碰中文字幕在线| 懂色av中文字幕一区二区三区| 深田咏美在线x99av| gogo高清在线播放免费| 欧美精品777| 国产jjizz一区二区三区视频| 黄色综合网站| 亚洲xxx自由成熟| 成人影视在线播放| 黑人极品videos精品欧美裸| 免费看的av网站| 欧美3p在线观看| 国产v综合ⅴ日韩v欧美大片| 免费观看成年人视频| 亚洲精品国产无天堂网2021 | 伊人久久大香线蕉av一区| 在线高清av| 亚洲国产黄色片| 麻豆视频在线观看| 国产精品亚洲综合一区在线观看| 一区二区三区国| 成人午夜sm精品久久久久久久| 日韩大片在线观看视频| 国产无码精品在线播放| 国产精品亚洲第一区在线暖暖韩国| 在线视频一区观看| 青青青国产精品| 中文字幕av一区二区| 在线观看污污网站| 国产亚洲精品7777| 黄色高清无遮挡| 欧美精美视频| 国产精品高潮呻吟久久av黑人| 视频国产在线观看| 狠狠做深爱婷婷久久综合一区| 亚洲av永久无码精品| 国内精品久久久久国产盗摄免费观看完整版| 成人免费看吃奶视频网站| 巨大荫蒂视频欧美大片| 欧美一区二区高清| 精品99久久久久成人网站免费| 成人中文字幕在线| 久久久久久免费看| 要久久爱电视剧全集完整观看| 青青a在线精品免费观看| 玖玖综合伊人| 欧美日韩视频不卡| 极品颜值美女露脸啪啪| jiyouzz国产精品久久| 黄色片一级视频| 久久亚洲国产| 91手机在线播放| 蜜桃视频在线网站| 亚洲视频网站在线观看| 亚洲熟女乱色一区二区三区久久久| 国产精品久久久久久久久快鸭| 日本一本在线视频| 亚洲欧美高清| 亚洲成人一区二区三区| 免费欧美网站| 7777kkkk成人观看| 9色在线观看| 欧美不卡一区二区三区四区| 日韩精品国产一区二区| 欧美经典一区二区| 一女二男3p波多野结衣| 国产中文一区| 欧美一区二区视频17c| 四虎精品一区二区免费| 欧美高跟鞋交xxxxhd| 亚洲资源在线播放| 亚洲中国最大av网站| www.色天使| 青青草97国产精品免费观看 | 凸凹人妻人人澡人人添| 在线免费一区三区| 亚洲波多野结衣| 成人午夜视频在线| 日韩在线xxx| 欧美精选一区| 麻豆av一区二区三区| 日韩欧美激情| 97av在线播放| 国产日产一区二区三区| 日韩精品久久久久| 亚洲中文字幕一区二区| 亚洲视频小说图片| 国产精品九九九九九| 激情五月激情综合网| 免费一级特黄毛片| 亚洲欧美日本伦理| av在线不卡一区| 88xx成人免费观看视频库 | 国产三级精品三级观看| 99久久综合精品| 国产又大又黄又猛| 亚洲成人资源| 亚洲欧美精品| 国产亚洲第一伦理第一区| 91丨九色丨国产在线| 国产高清不卡| 欧美日韩成人在线播放| 五月婷婷在线视频| 精品国产乱码久久| 亚洲一区二区三区网站| 欧美日韩精品在线视频| 免看一级a毛片一片成人不卡| 久久久欧美精品sm网站| 人妻体体内射精一区二区| 久久一区激情| 日本一区二区黄色| 亚洲国产综合在线看不卡| 亚洲视频精品一区| 亚洲三级精品| 免费在线观看91| 亚洲国产中文在线| 成人午夜激情网| 深夜视频一区二区| 国产精品吹潮在线观看| 午夜不卡影院| 97碰在线观看| 性欧美video高清bbw| www亚洲欧美| 91大神xh98hx在线播放| 亚洲欧美在线看| 人成在线免费视频| 亚洲国产私拍精品国模在线观看| 国产模特av私拍大尺度| 欧美日韩不卡在线| 国产永久免费视频| 欧美性极品少妇| 国产精品尤物视频| 色综合婷婷久久| 亚洲av无码精品一区二区| 欧美视频免费在线| 久久精品视频9| 亚洲码国产岛国毛片在线| 国产精品久久久精品四季影院| 中文字幕精品综合| 亚洲色图日韩精品| 国产精品丝袜在线| 91免费在线看片| 国产精品人妖ts系列视频| 欧美波霸videosex极品| 国产精品麻豆视频| 日韩av片在线免费观看| 国产精品丝袜在线| 99热这里只有精品4| 亚洲精品乱码久久久久久日本蜜臀| 天天色影综合网| 亚洲欧美经典视频| 日本精品在线免费观看| 亚洲午夜精品在线| 日本午夜精品理论片a级app发布| 香蕉成人伊视频在线观看| 69国产精品视频免费观看| 色婷婷av一区二区三区gif| 精品国产乱子伦| 日韩欧美亚洲综合| 一级黄色片在线播放| 337p亚洲精品色噜噜| 精品国产黄色片| 日韩精品视频在线| 国产视频第一区| 日韩亚洲国产中文字幕| 黄色网页网址在线免费| 欧美激情视频网站| 中文在线8资源库| 国产精品久久久久久久久久ktv | 亚洲欧洲一区二区天堂久久| 91午夜在线观看| 久久电影一区| 久热精品在线播放| 国产成人三级在线观看| 特级西西人体wwwww| 日本一区二区三级电影在线观看| 国产免费一区二区三区四区| 性做久久久久久免费观看欧美| www.com国产| 欧美日韩国产天堂| 国产自产一区二区| 亚洲欧美制服第一页| 麻豆91在线| 97精品视频在线播放| 日韩中文影院| 亚洲精品免费网站| 亚洲人成精品久久久| 国产成人精品免费看在线播放| 一区二区精品| 爱豆国产剧免费观看大全剧苏畅| 国产91丝袜在线观看| 极品尤物一区二区| 亚洲成国产人片在线观看| 在线观看免费视频a| 欧美成人a在线| 免费人成在线观看播放视频| 国内精品模特av私拍在线观看| 亚洲精品国产嫩草在线观看| 激情小说综合网| 天天综合一区| 男人女人黄一级| 99国产精品国产精品久久| 国产又色又爽又高潮免费| 性做久久久久久免费观看 | 欧美一区二区三区系列电影| 毛片在线播放网站| 精品少妇一区二区30p| 超碰国产精品一区二页| 裸模一区二区三区免费| 中文字幕人成人乱码| 亚洲第一狼人区| 26uuu国产电影一区二区| 久久高清无码视频| 欧美一区2区视频在线观看| 国产日本在线| 91高清视频免费| 欧美区一区二区| 中文字幕一区二区中文字幕| 日日夜夜免费精品视频| bl动漫在线观看| 亚洲成人在线网站| 国产成人精品一区二三区四区五区 | 亚洲精品成人电影| 色综合色综合网色综合| 国产视频一区二区在线播放| 亚洲精品国产精品国自产观看| 手机精品视频在线观看| 五级黄高潮片90分钟视频| 亚洲成av人片在线| 少妇人妻一区二区| 欧美激情视频一区| 亚洲精品视频一二三区| 国产精品va在线观看无码| 国产裸体歌舞团一区二区| 91香蕉一区二区三区在线观看| 欧美精三区欧美精三区| 调教视频免费在线观看| 国产精品无av码在线观看| 91精品国产91久久综合| 粉色视频免费看| 国产精品成人一区二区艾草| 91福利在线观看视频| 久久精品人人做人人爽| 亚洲成人毛片| 国产又粗又长又爽视频| 国产精选一区二区三区| 欧美xxxx黑人xyx性爽| 亚洲国产精品人久久电影| 超级白嫩亚洲国产第一| 国产中文一区二区| 三级成人在线视频| 337人体粉嫩噜噜噜| 欧美日韩国产一二三| 污污片在线免费视频| 国产精品视频500部| 国产欧美日韩综合一区在线播放| 亚洲av片不卡无码久久| 色妹子一区二区| 最新av网站在线观看| 亚洲va欧美va在线观看| 欧美午夜免费影院| 一级国产黄色片| 欧美丝袜丝交足nylons| 黄网站视频在线观看| 2019国产精品视频| 国产亚洲欧洲| www..com.cn蕾丝视频在线观看免费版| 欧美三级中文字幕在线观看| 怡红院在线播放| 久久综合精品一区| 久久成人免费网站| 日本少妇久久久| 亚洲日本中文字幕免费在线不卡| 电影亚洲一区| 国产一二三在线视频| 久久精品一区八戒影视| 99热这里只有精品9| 91国产视频在线播放| 成人情趣视频网站| www男人天堂| 欧美性猛交xxxxxxxx| 久久香蕉一区| 亚洲精品美女久久7777777| 久久aⅴ国产欧美74aaa| 日本熟女一区二区|