第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
2.3 局部命名空間

在 Python 的局部命名空間中,記錄了函數(shù)的參數(shù)和局部變量。Python 中的內(nèi)置函數(shù) locals() 返回表示局部命名空間的字典,示例如下:def function(a, b): c = 3 d = 4 dict = locals() print(dict)function(1, 2)在第 1 行,函數(shù) function 定義了參數(shù) a 和 b在第 2 行,函數(shù) function 定義了局部變量 c在第 3 行,函數(shù) function 定義了局部變量 d程序輸出如下:{'a':1, 'b':2, 'c':3, 'd':4}輸出包括了 a、b、c 和 d,它們是函數(shù)的參數(shù)和局部變量。

3.2 序列化規(guī)則

使用 JSON.stringify 有些內(nèi)置規(guī)則。如果對(duì)象中存在包裝對(duì)象,則在轉(zhuǎn)換過(guò)程中會(huì)變成原始值。var obj = { string: new String('A promise is a promise.'), number: new Number(996),};var result = JSON.stringify(obj);console.log(result); // 輸出:"{"string":"A promise is a promise.","number":996}"如果轉(zhuǎn)換的對(duì)象或者對(duì)象下的屬性存在 toJSON 方法,那么這個(gè)方法的返回值會(huì)作為轉(zhuǎn)換結(jié)果。var user = { nickname: 'joker', toJSON: function() { return 'hahahahahahaha'; },}var result = JSON.stringify(user);console.log(result); // 輸出:"hahahahahahaha"可以看到結(jié)果為 toJSON 方法的返回值。除了數(shù)組以外的對(duì)象,轉(zhuǎn)換結(jié)果順序?yàn)殡S機(jī)。var obj = { b: 2, c: 3, a: 1,};如以上對(duì)象,轉(zhuǎn)換的結(jié)果有可能是以下情況中的一種:"{"a":1,"b":2,"c":3}""{"a":1,"c":3,"b":2}""{"b":2,"a":1,"c":3}""{"b":2,"c":3,"a":1}""{"c":3,"b":2,"a":1}""{"c":3,"a":1,"b":2}"undefined、ES6 中的 symbol 值、函數(shù)在轉(zhuǎn)換過(guò)程中都會(huì)被忽略,當(dāng)然函數(shù)如果具有 toJSON 方法依然會(huì)優(yōu)先選擇 toJSON 方法的結(jié)果。var fn = function() {};fn.toJSON = function() {return '我是函數(shù)'};var result = JSON.stringify({ a: fn, b: Symbol(1), c: undefined, d: function() {},});console.log(result);存在循環(huán)引用,則會(huì)報(bào)錯(cuò)var obj1 = { prop1: 1,};var obj2 = { prop1: 1,};obj1.prop2 = obj2;obj2.prop2 = obj1;JSON.stringify(obj1); // TypeError: Converting circular structure to JSON兩個(gè)對(duì)象相互引用之后,進(jìn)行系列化就會(huì)拋出錯(cuò)誤。在 ES6 中,symbol 可以作為對(duì)象的屬性值,但在處理的時(shí)候都會(huì)被忽略。var symbol = Symbol();var obj = { prop1: 'value1', [symbol]: 'value2',};console.log(obj);var result = JSON.stringify(obj);console.log(result); // 輸出:{"prop1":"value1"}null、正負(fù) Infinity、NaN 在序列化時(shí)都會(huì)被當(dāng)作 null 。var obj = { null: null, infinity1: +Infinity, infinity2: -Infinity, NaN: NaN,};var result = JSON.stringify(obj);console.log(result); // 輸出:{"null":null,"infinity1":null,"infinity2":null,"NaN":null}

2.1 影響字符串長(zhǎng)度或內(nèi)容的函數(shù)

序號(hào)函數(shù)說(shuō)明 1str.split() 拆分字符串 2str.slice() 按給定的位置截取字符串 3str.strip() 刪除字符串中的空格或者換行符 4str.lower() 將字符串轉(zhuǎn)換為小寫 5str.upper() 將字符串轉(zhuǎn)換為大寫 6str.cat() 連接字符串列 7str.replace() 替換字符串中的元素 8str.swapcase() 字符串中的大小寫互換下面我們將通過(guò)代碼操作詳細(xì)介紹這幾個(gè)函數(shù)的使用方法:1. split() 函數(shù)該函數(shù)根據(jù)指定的元素分割字符串。# 導(dǎo)入pandas包import pandas as pddata_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第16小節(jié)/execl數(shù)據(jù)demo.xlsx"# 解析數(shù)據(jù)data = pd.read_excel(data_path)print(data)# --- 輸出結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python@163.com 1991年 67.0 Guido van Rossum\n2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js@qq.com 1995年 59.5 Brendan Eich4 php 2012年\n 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# split() 函數(shù)new_series=data["編程語(yǔ)言"]split_res= new_series.str.split("@")print(split_res)# --- 輸出結(jié)果 ---0 [java]1 [python, 163.com]2 [C]3 [js, qq.com]4 [php]5 [C++ ]Name: 編程語(yǔ)言, dtype: object結(jié)果解析:首先我們獲得 DataFrame 的 “編程語(yǔ)言” 列,返回的數(shù)據(jù)結(jié)構(gòu)為 Series ,我們通過(guò) str 屬性的 split () 函數(shù),傳入分割依據(jù)的字符,通過(guò)結(jié)果可以看到,存在 @ 字符的字符串均被分割成了多個(gè)子元素,返回結(jié)果也是由列表構(gòu)成的 Series 數(shù)據(jù)集。2. slice() 函數(shù)該函數(shù)根據(jù)給定開(kāi)始和結(jié)束的下標(biāo)位置,截取字符串,注意是左閉右開(kāi),不包含右邊的下標(biāo)位置,該函數(shù)有三參數(shù):start :開(kāi)始下標(biāo) stop :結(jié)束下標(biāo) step :步長(zhǎng)# --- 解析 data 數(shù)據(jù)結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python@163.com 1991年 67.0 Guido van Rossum\n2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js@qq.com 1995年 59.5 Brendan Eich4 php 2012年\n 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustru# data 解析出來(lái)的數(shù)據(jù)# slice() 函數(shù)new_series=data["編程語(yǔ)言"]slice_res= new_series.str.slice(2,4)print(slice_res)# --- 輸出結(jié)果 ---0 va1 th2 3 @q4 p5 + Name: 編程語(yǔ)言, dtype: object結(jié)果解析:這里我們指定 "編程語(yǔ)言" 列每個(gè)字符串從下標(biāo) 2 截取到下標(biāo) 4,因?yàn)橄聵?biāo)是從 0 開(kāi)始的,因此也就是截取每個(gè)字符串中第 3 和第 4 個(gè)字符,可以看到每個(gè)輸出的結(jié)果。3. strip() 函數(shù)該函數(shù)會(huì)去掉字符串中頭和尾的空格已經(jīng)換行符。# --- 解析 data 數(shù)據(jù)結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python@163.com 1991年 67.0 Guido van Rossum\n2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js@qq.com 1995年 59.5 Brendan Eich4 php 2012年\n 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustru# data 解析出來(lái)的數(shù)據(jù)# strip() 函數(shù)new_series=data["編程語(yǔ)言"]slice_res= new_series.str.strip()print(slice_res)# --- 輸出結(jié)果 ---0 java1 python@163.com2 C3 js@qq.com4 php5 C++Name: 編程語(yǔ)言, dtype: object結(jié)果解析:通過(guò)輸出結(jié)果可以看到,“C++” 中原數(shù)據(jù)后面有空格在,使用函數(shù)操作后,空格被刪除。4. lower() 函數(shù)該函數(shù)用于將字符串中的所有大寫字母轉(zhuǎn)換為小寫字母。# --- 解析 data 數(shù)據(jù)結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python@163.com 1991年 67.0 Guido van Rossum\n2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js@qq.com 1995年 59.5 Brendan Eich4 php 2012年\n 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustru# data 解析出來(lái)的數(shù)據(jù)# lower() 函數(shù)new_series=data["編程語(yǔ)言"]slice_res= new_series.str.lower() print(slice_res)# --- 輸出結(jié)果 ---0 java1 python@163.com2 c3 js@qq.com4 php5 c++ Name: 編程語(yǔ)言, dtype: object結(jié)果解析:通過(guò)輸出結(jié)果可以看到,“編程語(yǔ)言” 列所有的大寫字母都轉(zhuǎn)換成了小寫。5. upper() 函數(shù)該函數(shù)用于將字符串中的所有小寫字母轉(zhuǎn)換為大寫字母。# --- 解析 data 數(shù)據(jù)結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python@163.com 1991年 67.0 Guido van Rossum\n2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js@qq.com 1995年 59.5 Brendan Eich4 php 2012年\n 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustru# data 解析出來(lái)的數(shù)據(jù)# upper() 函數(shù)new_series=data["編程語(yǔ)言"]slice_res= new_series.str.upper() print(slice_res)# --- 輸出結(jié)果 ---0 JAVA1 PYTHON@163.COM2 C3 JS@QQ.COM4 PHP5 C++ Name: 編程語(yǔ)言, dtype: object結(jié)果解析:通過(guò)輸出結(jié)果可以看到,"編程語(yǔ)言" 這一列所有的小寫字母均轉(zhuǎn)換為了大寫字母。6. cat() 函數(shù)該函數(shù)用于將兩列合并成一列數(shù)據(jù),前提是兩列都是字符,如果是數(shù)值的話會(huì)報(bào)錯(cuò)。# --- 解析 data 數(shù)據(jù)結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python@163.com 1991年 67.0 Guido van Rossum\n2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js@qq.com 1995年 59.5 Brendan Eich4 php 2012年\n 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# data 解析出來(lái)的數(shù)據(jù)# cat() 函數(shù)new_series=data["編程語(yǔ)言"]new_series_two=data["主要?jiǎng)?chuàng)始人"]slice_res= new_series.str.cat(new_series_two) print(slice_res)# --- 輸出結(jié)果 ---0 javaJames Gosling1 python@163.comGuido van Rossum\n2 CDennis MacAlistair Ritchie3 js@qq.comBrendan Eich4 phpRasmus Lerdorf5 C++ Bjarne StroustrupName: 編程語(yǔ)言, dtype: object結(jié)果解析:通過(guò) cat () 函數(shù),將 “編程語(yǔ)言” 和 “主要?jiǎng)?chuàng)始人” 兩列進(jìn)行合并,可以看到輸出結(jié)果中的合并結(jié)果。7. replace() 函數(shù)該函數(shù)可用于替換字符串的內(nèi)容。# --- 解析 data 數(shù)據(jù)結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python@163.com 1991年 67.0 Guido van Rossum\n2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js@qq.com 1995年 59.5 Brendan Eich4 php 2012年\n 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# data 解析出來(lái)的數(shù)據(jù)# replace() 函數(shù)new_series=data["編程語(yǔ)言"]slice_res= new_series.str.replace("com","cn") print(slice_res)# --- 輸出結(jié)果 ---0 java1 python@163.cn2 C3 js@qq.cn4 php5 C++ Name: 編程語(yǔ)言, dtype: object 結(jié)果解析:這里我們將 “編程語(yǔ)言” 列字符串中的 com 替換為 cn,通過(guò)輸出結(jié)果可以看到替換的效果。8. swapcase() 函數(shù)該函數(shù)用于將字符串中的大小寫進(jìn)行相互轉(zhuǎn)換(大寫轉(zhuǎn)換為小寫,小寫轉(zhuǎn)換為大寫)。# --- 解析 data 數(shù)據(jù)結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python@163.com 1991年 67.0 Guido van Rossum\n2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js@qq.com 1995年 59.5 Brendan Eich4 php 2012年\n 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# data 解析出來(lái)的數(shù)據(jù)# swapcase() 函數(shù)new_series=data["主要?jiǎng)?chuàng)始人"]slice_res= new_series.str.swapcase() print(slice_res)# --- 輸出結(jié)果 ---0 jAMES gOSLING1 gUIDO VAN rOSSUM\n2 dENNIS mACaLISTAIR rITCHIE3 bRENDAN eICH4 rASMUS lERDORF5 bJARNE sTROUSTRUPName: 主要?jiǎng)?chuàng)始人, dtype: object 結(jié)果解析:這里我們通過(guò) swapcase 函數(shù)將 “主要?jiǎng)?chuàng)始人” 列中字符串的大小寫進(jìn)行了互換,通過(guò)輸出結(jié)果可以看到互換的效果。

4. 參考文獻(xiàn)

C - Pointers

6. if 語(yǔ)句

1. 語(yǔ)法jinja2 模板中,使用 {% 和 %} 包圍的語(yǔ)法塊稱為語(yǔ)句,jinja2 支持類似于 Python 的 if-else 判斷語(yǔ)句,語(yǔ)法如下:{% if cond %}{% else %}{% endif %}jinja2 支持類似于 Python 的 if-elif 判斷語(yǔ)句,語(yǔ)法如下:{% if cond %}{% elif cond %}{% endif %}2. jinja2 模板定義一個(gè)演示 if 語(yǔ)句功能的模板:<html>{% if a %} <p>a is True</p>{% else %} <p>a is False</p>{% endif %}{% if b %} <p>b is True</p>{% elif c %} <p>b is False, and c is True</p>{% endif %}</html>在模板中根據(jù)變量 a、b、c 的取值生成不同的內(nèi)容。3. jinja2 的模板輸入a = Falseb = Falsec = True4. 渲染后的 html<html> <p>a is False</p> <p>b is False, and c is True</p></html>

4. 宏實(shí)戰(zhàn)

我們?cè)诖a中通過(guò)宏批量加注釋。錄制宏到 c 寄存器,錄制完之后批量調(diào)用宏 n@c:使用 @@ 命令執(zhí)行一遍上一次的操作,為 main.go 文件的第4,21,25行增加注釋:

C 語(yǔ)言中的 break 和 continue

循環(huán)語(yǔ)句很好用,但是如果循環(huán)進(jìn)行到一般想要跳出循環(huán)或者結(jié)束循環(huán)怎么辦?那么那你需要 break 和 continue 語(yǔ)句。

3.6 os.path.exists(path)

os.path.exists(path) 檢查文件是否存在:參數(shù) path, 文件路徑返回值,如果文件存在則返回 True,如果文件不存在則返回 False該函數(shù)的使用示例:>>> import os>>> os.path.exists('C:\\Windows')True>>> os.path.exists('C:\\non-exist-file')False

5.6 Map 函數(shù)

還記得我們?cè)?Sass 數(shù)據(jù)類型章節(jié)講到的 Maps 類型嗎,Map 函數(shù)就是提供了很多操作 Maps 類型數(shù)據(jù)的功能。5.6.1 map-get($map, $key)map-get($map, $key) 函數(shù)是從 $map 中取出 key 為 $key 的值,第 1 個(gè)參數(shù)是 Maps 類型的數(shù)據(jù),我們舉例看下:$val_map: ("a": 1, "b": 2, "c": 3); // 定義 maps 類型的數(shù)據(jù)map-get($val_map, "a") //=> 1map-get($val_map, "b") //=> 2這個(gè)函數(shù)就很像 javascript 中從 object 數(shù)據(jù)取值,它的功能也很單一,只是取值。5.6.2 map-has-key($map, $key)map-has-key($map, $key) 這個(gè)函數(shù)返回在 $map 中是否有 $key,返回的值是布爾類型。$val_map: ("a": 1, "b": 2, "c": 3); // 定義 maps 類型的數(shù)據(jù)map-has-key($val_map, "b") //=> truemap-has-key($val_map, "e") //=> false5.6.3 map-keys($map)map-keys($map) 函數(shù)返回傳入的 map 中所有的 key,并且會(huì)以逗號(hào)分隔為一個(gè)列表返回。$val_map: ("a": 1, "b": 2, "c": 3); // 定義 maps 類型的數(shù)據(jù)map-keys($val_map) //=> "a","b","c"5.6.4 map-merge($map1, $map2)map-merge($map1, $map2) 函數(shù)用于合并兩個(gè) maps 類型的數(shù)據(jù) $map1 和 $map2,并且會(huì)返回一個(gè)新的 map,如果 $map1 和 $map2 中有相同的 key ,那么 $map2 中的數(shù)據(jù)會(huì)覆蓋 $map1 中的這條數(shù)據(jù),這個(gè)函數(shù)和 javascript 中合并兩個(gè)對(duì)象的方法很類似。我們舉例看下:$val_map1: ("a": 1, "b": 2);$val_map2: ("c": 3, "d": 4);map-merge($val_map1, $val_map2)// => 返回的數(shù)據(jù)// (// "a": 1,// "b": 2,// "c": 3,// "d": 4// )5.6.5 map-remove($map, $keys…)看到 remove 我們就知道這個(gè)是用來(lái)刪除的,map-remove($map, $keys…) 函數(shù)用來(lái)刪除 $map 中的一個(gè)或多個(gè)與 $keys 關(guān)聯(lián)的值,并且返回刪除后的 map。$val_map: ("a": 1, "b": 2, "c": 3); // 定義 maps 類型的數(shù)據(jù)map-remove($val_map, "a", "b") //=> ("c": 3)5.6.6 map-values($map)前面講到一個(gè)函數(shù)可以返回 map 中所有的 key ,map-values($map) 這個(gè)函數(shù)與其類似是用來(lái)返回 map 中所有的 value,同樣會(huì)以逗號(hào)分隔為一個(gè)列表返回。$val_map: ("a": 1, "b": 2, "c": 3); // 定義 maps 類型的數(shù)據(jù)map-values($val_map) //=> 1,2,3到這里我們講了 Map 函數(shù),你可以使用各種 Map 函數(shù)來(lái)對(duì) Maps 數(shù)據(jù)類型進(jìn)行操作和增刪改查。

5.2 創(chuàng)建元組

>>> x = tuple()>>> x()創(chuàng)建一個(gè)空的元組>>> iterable = ['a', 'b', 'c']>>> x = tuple(iterable)>>> x('a', 'b', 'c')創(chuàng)建一個(gè)可迭代對(duì)象 iterable,iterable 是一個(gè)包含 3 個(gè)元素的列表通過(guò) tuple(iterable) 將可迭代對(duì)象 iterable 轉(zhuǎn)換為 tuple

2.3 刪除指定的行和列

有時(shí)候我們需要將某行和某列同時(shí)刪除,這時(shí)候我們可以同時(shí)傳入 index 和 columns 的參數(shù)值即可,如果只傳一個(gè),則是只刪除對(duì)應(yīng)的行或者列:# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"# 解析數(shù)據(jù)data = pd.read_excel(data_path)print(data)# --- 輸出結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# 同時(shí)刪除指定行和列data_res=data.drop(index=4, columns="主要?jiǎng)?chuàng)始人")print(data_res)# --- 輸出結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格0 java 1995年 45.61 python 1991年 67.02 C 1972年 33.93 js 1995年 59.55 C++ 1983年 75.0輸出解析:這里我們同時(shí)指定了行索引和列索引的值,通過(guò)輸出結(jié)果可以看出,這里刪除了行索引為4的數(shù)據(jù)并且刪除了主要?jiǎng)?chuàng)始人這一列的數(shù)據(jù)。

1. Eclipse 是什么?

大部分聽(tīng)過(guò) Eclipse 的人都會(huì)認(rèn)為它就是一個(gè) Java 集成開(kāi)發(fā)環(huán)境(IDE)。但是如果跳出工具軟件的概念,Eclipse 可以看做是一個(gè)開(kāi)源社區(qū),這個(gè)開(kāi)源社區(qū)專注于構(gòu)建一個(gè)免費(fèi)開(kāi)放的開(kāi)發(fā)平臺(tái)。需要指出的是,大部分人都認(rèn)為 Eclipse 就是一款被 Java 開(kāi)發(fā)人員用于 Java 開(kāi)發(fā)的工具。但是事實(shí)上,Eclipse 對(duì)于不同的人來(lái)說(shuō)可能是不同的。因?yàn)?Eclipse 提供了插件開(kāi)發(fā)環(huán)境(Plug-in Development Environment,簡(jiǎn)稱 PDE) ,它允許所有對(duì) Eclipse 感興趣的人都可以通過(guò)插件來(lái)擴(kuò)展 Eclipse,比如 JDT(Eclipse 中的 Java 開(kāi)發(fā)工具)。這就使用 Eclipse 的使用并不限于 Java 語(yǔ)言(Eclipse 官方就提供了 C/C++、PHP、JavaScript、Rust 等語(yǔ)言版本)。所以,雖然大部分時(shí)候 Eclipse 都是指 Java 集成開(kāi)發(fā)環(huán)境(IDE),但有時(shí)候也可能是指其他語(yǔ)言的集成開(kāi)發(fā)環(huán)境。 面向 C/C++ 開(kāi)發(fā)人員的 Eclipse上圖是官網(wǎng)所提供的用于 C 和 C++ 開(kāi)發(fā)的 Eclipse IDE。

2. 顯式類型轉(zhuǎn)換

如果說(shuō)隱式類型轉(zhuǎn)換是編譯器自動(dòng)進(jìn)行的類型轉(zhuǎn)換,那么顯式類型轉(zhuǎn)換,則是我們?nèi)藶榈倪M(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,這里可以理解為是一種強(qiáng)制的類型的轉(zhuǎn)換,這種轉(zhuǎn)換將不再遵守上面的轉(zhuǎn)換規(guī)則,而是按照我們?nèi)藶榈臉?biāo)明的類型進(jìn)行轉(zhuǎn)換。就是在我們需要指定類型的變量前加上數(shù)據(jù)類型,并用圓括號(hào)包裹。例如: (int)a, (float)b, (long)c 等。下面我們通過(guò)一個(gè)示例程序來(lái)看一下顯式類型轉(zhuǎn)換:393下面是執(zhí)行結(jié)果。a type: int, b type: int, c type: float, d type: floata=b+c, a=5type (b+c): intd=b+c, d=5.000000通過(guò)顯式類型轉(zhuǎn)換,我們可以控制在計(jì)算過(guò)程中的數(shù)據(jù)類型。之前自動(dòng)轉(zhuǎn)換為 float 類型的數(shù)據(jù),在我們顯式指定為 int 類型后,計(jì)算過(guò)程中就會(huì)按照 int 類型來(lái)進(jìn)行計(jì)算。

2.2 reshape

ndarray 提供了一個(gè)不改變數(shù)組元素內(nèi)容、直接改變數(shù)組維度的方法:reshape。通過(guò)該方法,可以方便地對(duì)數(shù)組元素進(jìn)行重排。reshape 的函數(shù)調(diào)用方法如下:ndarray.reshape(newshape, order="C")構(gòu)造函數(shù)接受的參數(shù)詳解如下:參數(shù)描述newshape變更后的數(shù)組維度order數(shù)據(jù)元素重排方式,有C、F、A可選?!癈”指的是用類C寫的讀/索引順序的元素,對(duì)二維數(shù)組,是優(yōu)先讀寫行;“F”是指用FORTRAN類索引順序讀/寫元素,對(duì)二維數(shù)組,是優(yōu)先讀寫列?!癆”表示排序方式跟隨原數(shù)組。案例利用 reshape 方法生成一個(gè)維度為 4*5、優(yōu)先讀寫行的二維數(shù)組。np.array(range(20)).reshape((4,5), order="C")這里用 range(20) 生成一個(gè)長(zhǎng)度為20的有序序列,用 reshape 進(jìn)行重排序,order 表示優(yōu)先讀寫行。Out: array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])

5.1 創(chuàng)建列表

>>> x = list()>>> x[]創(chuàng)建一個(gè)空的列表>>> iterable = ('a', 'b', 'c')>>> x = list(iterable)>>> x['a', 'b', 'c']創(chuàng)建一個(gè)可迭代對(duì)象 iterable,iterable 是一個(gè)包含 3 個(gè)元素的元組通過(guò) list(iterable) 將可迭代對(duì)象 iterable 轉(zhuǎn)換為 list

3.1 JavaScript 簡(jiǎn)單介紹

JS 也是一種語(yǔ)言,和 C/C++/Java/Python 類似。真正的瀏覽器的核心除了對(duì) html 元素進(jìn)行渲染外,還需要提供 JS 引擎,解析并執(zhí)行 JS 腳本。谷歌瀏覽器用 C++ 語(yǔ)言實(shí)現(xiàn)了著名的 V8 引擎。我們右鍵可以直接在開(kāi)發(fā)者工具的 console 面板寫 JS 代碼,看到語(yǔ)句的執(zhí)行輸出,以及語(yǔ)句相應(yīng)返回結(jié)果。開(kāi)發(fā)者工具下執(zhí)行 JS 代碼對(duì)于 JS 的基礎(chǔ)知識(shí),上手是非??斓?,限于篇幅就不會(huì)展開(kāi)介紹了。

2.2 修改列索引值

# 導(dǎo)入pandas包import pandas as pd# 指定導(dǎo)入的文件地址data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"# 解析數(shù)據(jù)data = pd.read_excel(data_path)print(data)# --- 輸出結(jié)果 --- 編程語(yǔ)言 推出時(shí)間 價(jià)格 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# 修改行索引和 rename({0: "aa", 2: "bb", 3: "cc"},axis=0) 等價(jià)data_res=data.rename(index={0: "aa", 2: "bb", 3: "cc"})print(data_res)# 修改列索引和 rename({"編程語(yǔ)言": "bcyy", "價(jià)格": "jiage"},axis=1) 等價(jià)data_res=data.rename(columns={"編程語(yǔ)言": "bcyy", "價(jià)格": "jiage"})print(data_res)# --- 輸出結(jié)果 --- bcyy 推出時(shí)間 jiage 主要?jiǎng)?chuàng)始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup輸出解析:我們這里通過(guò) columns 指定了映射關(guān)系,將列索引值編程語(yǔ)言和價(jià)格分別修改為 bcyy 和 jiage ,通過(guò)輸出結(jié)果可以看到修改的效果。當(dāng)然如果我們同時(shí)設(shè)置 index 和 columns 的映射關(guān)系,則會(huì)同時(shí)修改對(duì)應(yīng)的索引值:# 修改列索引和 rename({"編程語(yǔ)言": "bcyy", "價(jià)格": "jiage"},axis=1) 等價(jià)data_res=data.rename(index={0: "aa", 2: "bb", 3: "cc"},columns={"編程語(yǔ)言": "bcyy", "價(jià)格": "jiage"})print(data_res)# --- 輸出結(jié)果 ---bcyy 推出時(shí)間 jiage 主要?jiǎng)?chuàng)始人aa java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossumbb C 1972年 33.9 Dennis MacAlistair Ritchiecc js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup

5. 實(shí)例測(cè)試希爾排序代碼

我們來(lái)測(cè)試希爾排序算法的性能,使用10000個(gè)隨機(jī)數(shù)進(jìn)行測(cè)試:import randomimport datetimefrom sort_algorithms import shell_sort, insert_sort2if __name__ == '__main__': nums = [random.randint(10, 10000) for i in range(10000)] start = datetime.datetime.now() shell_sort(nums) # insert_sort2(nums) end = datetime.datetime.now() print('Running time: %s Seconds' % (end-start))PS C:\Users\spyinx\Desktop\學(xué)習(xí)教程\慕課網(wǎng)教程\算法慕課教程\code> & "D:/Program Files (x86)/python3/python.exe" c:/Users/spyinx/Desktop/學(xué)習(xí)教程/慕課網(wǎng)教程/算法慕課教程/code/test_algorithms.pyRunning time: 0:00:00.071001 Seconds然后來(lái)看看我們用前面改進(jìn)的插入排序算法 (使用前面完成的 insert_sort2() 方法) 進(jìn)行測(cè)試并和希爾排序的結(jié)果對(duì)比??梢钥吹较柵判虻男阅艽蟾攀遣迦肱判蛩惴ǖ?3 倍,所以希爾排序相比插入排序算法性能提升還是非常明顯的。PS C:\Users\spyinx\Desktop\學(xué)習(xí)教程\慕課網(wǎng)教程\算法慕課教程\code> & "D:/Program Files (x86)/python3/python.exe" c:/Users/spyinx/Desktop/學(xué)習(xí)教程/慕課網(wǎng)教程/算法慕課教程/code/test_algorithms.pyRunning time: 0:00:00.216178 Seconds

Android Studio 如何安裝 NDK 和 CMake

前面的小節(jié)我們學(xué)習(xí)了如何剖析應(yīng)用性能,接下來(lái)幾個(gè)小結(jié)我們學(xué)習(xí)如何 C/C++ 支持(NDK)方面的知識(shí)。本小節(jié)學(xué)習(xí)如何安裝 NDK 和 CMake。

2. 簡(jiǎn)單的對(duì)象混入

先來(lái)看一個(gè)基礎(chǔ)例子:let target = { a: 1, b: 1 }let source1 = { a: 2, c: 3 }let source2 = { b: 2, d: 4 }Object.assign(target, source1, source2)console.log(target) // { a: 2, b: 2, c: 3, d: 4 }解釋: 通過(guò) Object.assign() 將 source1 與 source2 混入到 target 上,并且替換了 target 對(duì)象原有的屬性值。

2.6 從 Set 中生成數(shù)組

用 Set 定義的數(shù)組對(duì)象,可以使用 Array.from() 得到一個(gè)正常的數(shù)組。const set = new Set(['a', 'b', 'c', 'd']);Array.from(set);// [ "a", "b", "c", "d" ]上面的代碼中創(chuàng)建了一個(gè) Set 數(shù)據(jù)結(jié)構(gòu),把實(shí)例傳入 Array.from() 可以得到一個(gè)真正的數(shù)組。

3.2 DataFrame 常用的操作方法

接下來(lái)我們一起看下dataframe的常用方法,見(jiàn)證這個(gè)二維數(shù)據(jù)的厲害吧。常用函數(shù)函數(shù)描述DataFrame()創(chuàng)建一個(gè)DataFrame數(shù)據(jù)結(jié)構(gòu)的對(duì)象head()用于查看數(shù)據(jù)集的前n行info()快速查看數(shù)據(jù)的描述tail()用于查看數(shù)據(jù)集的后n行T轉(zhuǎn)置函數(shù)sum()求和函數(shù)下面我們分別看一下每個(gè)方法的具體操作實(shí)例:DataFrame() 方法該方法用于創(chuàng)建 DataFrame 對(duì)象,我們可以指定行索引和列索引創(chuàng)建,還可以通過(guò)字典進(jìn)行創(chuàng)建。下面代碼中分部創(chuàng)建一個(gè)4*4的 DataFrame。# 1.通過(guò)傳入數(shù)據(jù),行索引,列索引進(jìn)行創(chuàng)建df1=pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]], index=list('ABCD'),columns=list('ABCD'))print(df1)# --- 輸出結(jié)果 --- A B C DA 1 2 3 4B 5 6 7 8C 9 10 11 12D 13 14 15 16# 第一個(gè)參數(shù)是存放在DataFrame里的數(shù)據(jù),第二個(gè)index是行名索引,第三個(gè)columns是列索引,注意:這里index,columns的list長(zhǎng)度要和對(duì)應(yīng)的行和列索引數(shù)量一致,不然會(huì)報(bào)錯(cuò)。# 1.通過(guò)字典進(jìn)行創(chuàng)建data={'A':['1','2','3','4'], 'B':['5','6','7','8'], 'C':['9','10','10','11'], 'D':['12','13','14','15']}df2=pd.DataFrame(data)print(df2)# --- 輸出結(jié)果 --- A B C D0 1 5 9 121 2 6 10 132 3 7 10 143 4 8 11 15head() 方法該方法通過(guò)傳入的值,查找數(shù)據(jù)的的前n行# 2.head(2) 取前兩行數(shù)據(jù)data={'A':['1','2','3','4'], 'B':['5','6','7','8'], 'C':['9','10','10','11'], 'D':['12','13','14','15']}df2=pd.DataFrame(data)print(df2.head(2))# --- 輸出結(jié)果 --- A B C D0 1 5 9 121 2 6 10 13# 這里我們輸出了前兩行的數(shù)據(jù)info() 方法通過(guò)該方法,可以看到數(shù)據(jù)的描述信息摘要,在對(duì)數(shù)據(jù)進(jìn)行探索性分析時(shí)比較有用,比如行和列數(shù),每個(gè)值的類型,以及非空值的數(shù)量。# 3.info() 取前兩行數(shù)據(jù)data={'A':['1','2','3','4'], 'B':['5','6','7','8'], 'C':['9','10','10','11'], 'D':['12','13','14','15']}df2=pd.DataFrame(data)print(df2.info())# --- 輸出結(jié)果 ---<class 'pandas.core.frame.DataFrame'>RangeIndex: 4 entries, 0 to 3Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 A 4 non-null object 1 B 4 non-null object 2 C 4 non-null object 3 D 4 non-null objectdtypes: object(4)memory usage: 256.0+ bytesNonetail() 方法通過(guò)傳入的值,返回 DataFrame 對(duì)象的后幾行數(shù)據(jù)# 4.tail(2) 取后兩行數(shù)據(jù)data={'A':['1','2','3','4'], 'B':['5','6','7','8'], 'C':['9','10','10','11'], 'D':['12','13','14','15']}df2=pd.DataFrame(data)print(df2.tail(2))# --- 輸出結(jié)果 --- A B C D2 3 7 10 143 4 8 11 15# 這里輸出的是后兩行數(shù)據(jù)T 方法直接字母 T,可以將 DataFrame 的行和列進(jìn)行置換。# 5.T 進(jìn)行置換行和列data={'A':['1','2','3','4'], 'B':['5','6','7','8'], 'C':['9','10','10','11'], 'D':['12','13','14','15']}df2=pd.DataFrame(data)print(df2)# --- 輸出結(jié)果 --- A B C D0 1 5 9 121 2 6 10 132 3 7 10 143 4 8 11 15 # 原dataframeprint(df2.T)# --- 輸出結(jié)果 --- 0 1 2 3A 1 2 3 4B 5 6 7 8C 9 10 10 11D 12 13 14 15 # 進(jìn)行置換后,行和列位置變換sum() 方法sum() 是求和方法,默認(rèn)是對(duì)每列求和,傳入 1 也就是 sum(1) ,是對(duì)每行進(jìn)行求和。# 1.sum()對(duì)每列求和,sum(1)對(duì)每行進(jìn)行求和data={'A':[1,2,3,4], 'B':[5,6,7,8], 'C':[9,10,11,12], 'D':[13,14,15,16]}df2=pd.DataFrame(data)print(df2)# --- 輸出結(jié)果 --- A B C D0 1 5 9 131 2 6 10 142 3 7 11 153 4 8 12 16 # 原dataframe數(shù)據(jù)print(df2.sum())# --- 輸出結(jié)果 ---A 10B 26C 42D 58 dtype: int64 # 對(duì)每列進(jìn)行求和print(df2.sum(1))# --- 輸出結(jié)果 ---0 281 322 363 40dtype: int64 # 對(duì)每行進(jìn)行求和

3.1 collect

collect 操作是根據(jù) Stream 里面的值生成一個(gè)列表,它是一個(gè)求值操作。Tips: collect 方法通常會(huì)結(jié)合 Collectors 接口一起使用,是一個(gè)通用的強(qiáng)大結(jié)構(gòu),可以滿足數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)分塊、字符串處理等操作。我們來(lái)看一些例子:生成集合:1276輸出:[a, b, c]使用 collect(Collectors.toList()) 方法從 Stream 中生成一個(gè)列表。集合轉(zhuǎn)換:使用 collect 來(lái)定制集合收集元素。1277輸出結(jié)果: [a, b, c, c][a, b, c]使用 toCollection 來(lái)定制集合收集元素,這樣就把 List 集合轉(zhuǎn)換成了 TreeSet轉(zhuǎn)換成值:使用 collect 來(lái)對(duì)元素求值。1278輸出: c上面我們使用 maxBy 接口讓收集器生成一個(gè)值,通過(guò)方法引用調(diào)用了 String 的 compareTo 方法來(lái)比較元素的大小。同樣還可以使用 minBy 來(lái)獲取最小值。數(shù)據(jù)分塊:比如我們對(duì)于數(shù)據(jù) 1-7 想把他們分成兩組,一組大于 5 另外一組小于等于 5,我們可以這么做:1279輸出結(jié)果:[6, 7][1, 2, 3, 4, 5]通過(guò) partitioningBy 接口可以把數(shù)據(jù)分成兩類,即滿足條件的和不滿足條件的,最后將其收集成為一個(gè) Map 對(duì)象,其 Key 為 Boolean 類型,Value 為相應(yīng)的集合元素。同樣我們還可以使用 groupingBy 方法來(lái)對(duì)數(shù)據(jù)進(jìn)行分組收集,這類似于 SQL 中的 group by 操作。字符串處理:collect 還可以來(lái)將元素組合成一個(gè)字符串。1280輸出:[a,b,c]這里我們把 collected 數(shù)組的每個(gè)元素拼接起來(lái),并用 [ ] 包裹。

2.1 pip 簡(jiǎn)介

pip 是 Python 包管理工具,該工具提供了對(duì)Python 包的查找、下載、安裝、卸載的功能。Python 3.4+ 以上版本自帶 pip 工具,如果在 python.org 下載最新版本的安裝包,則已經(jīng)自帶了該工具。使用命令 pip --version 檢查是否已經(jīng)安裝了 pip,如下所示:C:\> pip --versionpip 9.0.1 from C:\Python3\lib\site-packages (python 3.6)

1. 通道的聲明和定義

通道可以理解為一種特殊的變量,所以它的聲明和其它變量的聲明并沒(méi)有太大的區(qū)別,聲明通道變量的寫法如下:var c chan int //聲明一個(gè)存放int類型數(shù)據(jù)的通道但是它聲明之后并不能直接使用,需要使用內(nèi)置函數(shù) make() 來(lái)創(chuàng)建一下通道變量才可以使用:Tips:由于 chan 的底層是一個(gè)指針,在 Go 語(yǔ)言中指針初始值為空,是需要實(shí)例化的。make 就是實(shí)例化了 chan。var c chan int //聲明一個(gè)存放int類型數(shù)據(jù)的通道c = make(chan int, 1) //創(chuàng)建一個(gè)長(zhǎng)度為1的通道在這種情況下最好使用:= 來(lái)同時(shí)聲明和創(chuàng)建:c := make(chan int, 1) //聲明并創(chuàng)建一個(gè)存放int類型數(shù)據(jù)的通道

2.1 Cpp 代碼

項(xiàng)目中包含一個(gè) cpp 源碼文件:native-lib.cppextern "C" JNIEXPORT jstring JNICALLJava_com_imooc_hellojni_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { std::string hello = "This string from C++"; return env->NewStringUTF(hello.c_str());}這個(gè)函數(shù)的功能很簡(jiǎn)單,返回一個(gè)字串 “This string from C++”。我們看到這個(gè)函數(shù)的函數(shù)名很長(zhǎng):Java_com_imooc_hellojni_MainActivity_stringFromJNI,這是按特定的規(guī)范組織的,分解之后各部分的含義如下:Java:表示是給 Java 源碼中調(diào)用的。com_imooc_hellojni_MainActivity:表示由哪個(gè) Java 類(包名類名)來(lái)調(diào)用。stringFromJNI:表示本地方法名稱,會(huì)在 Java 源碼中聲明。

1.1 簡(jiǎn)介

正則表達(dá)式 (regular expression) 描述了一種字符串匹配的模式 (pattern),例如:模式 ab+c可以匹配 abc、abbc、abbbc代表前面的字符出現(xiàn) 1 次或者多次模式 ab*c可以匹配 ac、abc、abbc? 代表前面的字符出現(xiàn) 0 次或者多次模式 ab?c可以匹配 ac、abc? 代表前面的字符出現(xiàn) 0 次或者 1 次它的用途包括:檢查一個(gè)串是否含有某種子串將匹配的子串替換從某個(gè)串中取出符合某個(gè)條件的子串

5. 本教程適合哪些人群?

零基礎(chǔ)的開(kāi)發(fā)者(會(huì)從編程語(yǔ)言的最基礎(chǔ)開(kāi)始講起);有一定 Java、C 或 C++ 開(kāi)發(fā)基礎(chǔ)開(kāi)發(fā)者想學(xué)習(xí) Kotlin 開(kāi)發(fā);Android 開(kāi)發(fā)者想學(xué)習(xí) Kotlin 開(kāi)發(fā) Android 應(yīng)用;Java 后端開(kāi)發(fā)者想學(xué)習(xí) Kotlin 開(kāi)發(fā)后端應(yīng)用;對(duì) Kotlin 語(yǔ)言感興趣的所有開(kāi)發(fā)者。

4.1 數(shù)組轉(zhuǎn)化為對(duì)象

將一個(gè)帶有鍵值對(duì)的數(shù)組轉(zhuǎn)化成對(duì)象。var arr = [ ['a', '0'], ['b', '1'], ['c', '2'] ];var obj = Object.fromEntries(arr);console.log(obj); // {a: "0", b: "1", c: "2"}上面的代碼中,arr 是一個(gè)二維數(shù)組,子數(shù)組中的每一個(gè)項(xiàng)包含鍵和值,只有這樣的數(shù)組類型才可以轉(zhuǎn)化為對(duì)象。

直播
查看課程詳情
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)