最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

耗時(shí)600小時(shí)整理《Python教程全套》完全入門版,分享一起學(xué)習(xí)_高清附字幕

2021-08-01 16:57 作者:水母山楂  | 我要投稿

〇、前言

1.?關(guān)于筆記

筆記從WPS復(fù)制到B站的,沒有文字大小和顏色

筆記中前面帶#的是注釋內(nèi)容

目前已完結(jié)(P6-P169)

因?yàn)锽站筆記只能記20000字,這里的筆記從原筆記刪去近一半內(nèi)容。幾乎沒有示例內(nèi)容,沒有二十四章、函數(shù)及以后內(nèi)容

關(guān)于WPS筆記和一些其他內(nèi)容,可以通過下面的百度網(wǎng)盤鏈接下載

https://pan.baidu.com/s/1fTwjyoM81_OOAccPNhGE9Q?pwd=h3fg

筆記中如果有錯(cuò)誤的地方歡迎在評論區(qū)指正

2.?關(guān)于擴(kuò)展

2.1.?擴(kuò)展大多數(shù)只擴(kuò)展基本概念和用法

2.2.?一部分注釋也可以當(dāng)做擴(kuò)展

2.3.?關(guān)于擴(kuò)展的內(nèi)容

部分內(nèi)容轉(zhuǎn)摘或摘編自以下網(wǎng)站:

菜鳥教程:https://www.runoob.com/

C語言中文網(wǎng):http://c.biancheng.net/

部分內(nèi)容來源網(wǎng)絡(luò)、來源視頻或自我理解


一、輸出函數(shù)print()

1.?print()函數(shù)輸出內(nèi)容

數(shù)字

字符串

含有運(yùn)算符的表達(dá)式

2.?print()函數(shù)輸出目的地

顯示器

文件

3.?print()函數(shù)輸出形式

換行

不換行

4.?補(bǔ)充

a+的含義:如果文件不存在就創(chuàng)建,存在就在文件內(nèi)容的后面繼續(xù)追加

內(nèi)置函數(shù):不需要前面加任何前綴,直接可以使用的函數(shù)


二、轉(zhuǎn)義字符與原字符

(1)、轉(zhuǎn)義字符

1.?組成

反斜杠(\)+想要實(shí)現(xiàn)的轉(zhuǎn)義功能首字母

2.?作用

2.1.?當(dāng)字符串中包含反斜杠(\)、單引號和雙引號('?")等有特殊用途的字符時(shí)、必須使用反斜杠(\)進(jìn)行轉(zhuǎn)義(轉(zhuǎn)換一個(gè)含義)

示例:

反斜杠:\\

單引號:\'

雙引號:\"

2.2.?當(dāng)字符串中包含換行、回車、水平制表位或退格等無法直接表示的特殊字符時(shí),也可以使用轉(zhuǎn)義字符

示例:

換行:\n (newline)

回車:\r (return)

水平制表位:\t (tab)

# \t占4個(gè)字符的位置

退格:\b (back space)

(2)、原字符

1.?含義

不希望字符串中的轉(zhuǎn)義字符起作用,讓轉(zhuǎn)義字符不起作用的叫原字符

2.?使用

在字符串之前加上r或R

示例:

print(r'hello\nworld')

print(R'hello\nworld')

3.?注意事項(xiàng)

最后一個(gè)字符不能是反斜杠(\)

示例:

錯(cuò)誤示范:print(r'hello\nworld\')

正確示范:print(r'hello\nworld\\')


三、二進(jìn)制與字符編碼

(1)、二進(jìn)制

1.?計(jì)算機(jī)換算單位

8位(8bit)->1字節(jié)(1byte)??# 8位指8個(gè)位置

1024字節(jié)(1024byte)->1千字節(jié)(1KB)

1024千字節(jié)(1024KB)->1兆字節(jié)(1MB)

1024兆字節(jié)(1024MB)->1吉字節(jié)(1GB)

1024吉字節(jié)(1024GB)->1太字節(jié)(1TB)

擴(kuò)展:

1024太字節(jié)(1024TB)->1拍字節(jié)(1PB)

1024拍字節(jié)(1024PB)->1艾字節(jié)(1EB)

位(bit)<字節(jié)(byte)<千字節(jié)(KB)<兆字節(jié)(MB)<吉字節(jié)(千兆字節(jié)GB)<太字節(jié)(TB)<拍字節(jié)(PB)<艾字節(jié)(EB)

2.?二進(jìn)制的轉(zhuǎn)換

2.1.?什么是位

在計(jì)算機(jī)中的二進(jìn)制數(shù)系統(tǒng)中,每個(gè)0或1就是一個(gè)位(bit)

2.2.?8位

二位用0和1組合可表示4種狀態(tài),八位用0和1組合可以表示256種狀態(tài)(28),八位的256種狀態(tài)對應(yīng)現(xiàn)實(shí)生活中的256種符號(ASCII碼表)

2.3.?十進(jìn)制的轉(zhuǎn)換

使用電腦上的計(jì)算器(或在運(yùn)行里輸入calc),在查看里點(diǎn)擊程序員型

2.4.?使用python進(jìn)行字符轉(zhuǎn)換

二進(jìn)制轉(zhuǎn)字符:

print(chr(0b二進(jìn)制))

字符轉(zhuǎn)十進(jìn)制:

print(ord('字符'))

(2)、字符編碼

1.?二進(jìn)制與字符編碼

二進(jìn)制0和1->ASCII碼表

????->GB2312(80后)->GBK(90后)->GB18030(00后)

# 80后只能表示簡體中文,90后能表示繁體中文,00后能表示少數(shù)民族文字

????->其他國家的字符編碼

——>(統(tǒng)一)Unicode(中英都用2個(gè)字節(jié))->UTF-8(中文3個(gè)字節(jié),英文1個(gè)字節(jié))

2.?字符的表示

字符可以用二進(jìn)制、八進(jìn)制、十進(jìn)制或十六進(jìn)制表示,但最終到計(jì)算機(jī)會(huì)變成二進(jìn)制,因?yàn)橛?jì)算機(jī)只識別二進(jìn)制


四、Python中的標(biāo)識符和保留字

(1)、保留字

1.?什么是保留字

有些單詞被python賦予特定的意義,這些單詞在給python文件命名或給變量起名時(shí)不允許使用

2.?保留字有哪些

在python中輸入:

import keyword

print(keyword.kwlist)

可以查詢所有保留字

保留字列表:

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

(2)、標(biāo)識符

1.?什么是標(biāo)識符

在給變量、函數(shù)、類、模塊和其他對象起名字的名字就叫標(biāo)識符(需要你自己命名字的)

2.?標(biāo)識符的規(guī)則

可以使用字母、數(shù)字、下劃線

不可以使用數(shù)字開頭

不可以使用保留字

嚴(yán)格區(qū)分大小寫

# Python3中可以使用漢字作為標(biāo)識符,但不建議使用或避免使用


五、變量的定義和使用

1.?定義

可以改變的量

2.?使用

變量名(標(biāo)識符)+賦值運(yùn)算符+值

3.?組成

# obj->對象

標(biāo)識:表示對象所儲(chǔ)存的內(nèi)存地址,使用內(nèi)置函數(shù)id(obj)來獲取

類型:表示對象的數(shù)據(jù)類型,使用內(nèi)置函數(shù)type(obj)來獲取

值:表示對象所儲(chǔ)存的具體數(shù)據(jù),使用print(obj)可以將值進(jìn)行打印輸出


六、變量的多次賦值

1.?什么是多次賦值

多次賦值指給一個(gè)變量多次賦值

2.?多次賦值的結(jié)果

當(dāng)多次賦值之后,變量名會(huì)指向新的空間


七、數(shù)據(jù)中常見的數(shù)據(jù)類型

(1)、整數(shù)類型(int)

1.?表示

表示正數(shù)、負(fù)數(shù)和零

表示進(jìn)制:

十進(jìn)制->默認(rèn)的進(jìn)制

二進(jìn)制->以0b開頭

八進(jìn)制->以0o開頭

十六進(jìn)制->以0x開頭

(2)、浮點(diǎn)數(shù)類型(float)

1.?組成

浮點(diǎn)數(shù)是由整數(shù)部分和小數(shù)部分組成

2.?問題

浮點(diǎn)數(shù)儲(chǔ)存不精確,原因是計(jì)算機(jī)是使用二進(jìn)制存儲(chǔ)的,所以在存儲(chǔ)浮點(diǎn)數(shù)時(shí)不精確

# 不是所有浮點(diǎn)數(shù)計(jì)算都有問題

3.?解決辦法

通過導(dǎo)入模塊decimal來解決浮點(diǎn)數(shù)的問題

(3)、布爾類型(bool)

1.?表示

表示真或假的值

True表示真,F(xiàn)alse表示假


布爾值可以轉(zhuǎn)化為整數(shù)

True->1 False->0

(4)、字符串類型(str)

1.?定義

·?字符串又被稱為不可變的字符序列

·?可以使用單引號''雙引號''''三引號''''''或""""""來定義

·?單引號和雙引號定義的字符串必須在一行

·?三引號定義的字符串可以分布在連續(xù)的多行


八、數(shù)據(jù)類型轉(zhuǎn)換

(1)、為什么需要數(shù)據(jù)類型轉(zhuǎn)換

將不同數(shù)據(jù)類型的數(shù)據(jù)拼接在一起

(2)、str()函數(shù)與int()函數(shù)

1.?不同類型進(jìn)行連接時(shí)報(bào)錯(cuò)

str與int連接時(shí)會(huì)報(bào)錯(cuò)

2.?解決方案

2.1.?將其他數(shù)據(jù)類型轉(zhuǎn)成字符串類型:str()函數(shù)

2.2.?將其他數(shù)據(jù)類型轉(zhuǎn)成整數(shù)類型:int()函數(shù)

(3)、float()函數(shù)

1.?作用

將其他數(shù)據(jù)類型轉(zhuǎn)成浮點(diǎn)數(shù)類型

2.?注意事項(xiàng)

·?文字類無法轉(zhuǎn)成整數(shù)

·?整數(shù)轉(zhuǎn)成浮點(diǎn)數(shù),末尾為“.0”


(4)、總結(jié)

將其他數(shù)據(jù)轉(zhuǎn)成字符串

str()

將其他數(shù)據(jù)轉(zhuǎn)成整數(shù)

int()

將其他數(shù)據(jù)轉(zhuǎn)成浮點(diǎn)數(shù)

float()

擴(kuò)展:

將其他數(shù)據(jù)轉(zhuǎn)成布爾值

bool()??# 值是True或False,具體在“十三、對象的布爾值”會(huì)講


九、Python中的注釋

1.?注釋是什么

·?在代碼中對代碼的功能進(jìn)行解釋說明的標(biāo)注性文字,可以提高代碼的可讀性

·?注釋內(nèi)容會(huì)被Python解釋器忽略

2.?注釋的類型

2.1.?單行注釋

以“#”開頭,直到換行結(jié)束

示例:

#?單行注釋

2.2.?多行注釋

并沒有單獨(dú)的多行注釋標(biāo)記,將一對三引號(''''''或"""""")之間的代碼稱為多行注釋

示例:

'''多行

注釋'''

"""多行

注釋"""

2.3.?中文編碼聲明注釋

在文件開頭加上中文聲明注釋,用以指定源碼文件的編碼格式

python中默認(rèn)的存儲(chǔ)編碼是UTF-8

更改:

在前面寫上一句代碼

#?coding:編碼

示例:

#?coding:utf-8


十、input()函數(shù)

(1)、input()函數(shù)的基本使用

1.?作用

接收來自用戶的輸入

2.?使用

變量+賦值運(yùn)算符+input(提問)

# 提問是在輸入之前程序給你的一個(gè)提示語,根據(jù)提示語輸入一個(gè)數(shù)據(jù)

(2)、input()函數(shù)的高級使用

錄入兩個(gè)整數(shù),計(jì)算兩個(gè)整數(shù)的和

a?=?input('請輸入第一個(gè)加數(shù)')

b?=?input('請輸入第二個(gè)加數(shù)')

方法1:

print(int(a)+int(b))

方法2:

a?=?int(a)

b?=?int(b)

print(a+b)

運(yùn)行結(jié)果:

請輸入第一個(gè)加數(shù)100

請輸入第二個(gè)加數(shù)200

300


十一、Python中常用的運(yùn)算符

(1)、算術(shù)運(yùn)算符

1.?標(biāo)準(zhǔn)算術(shù)運(yùn)算符

加(+)、減(-)、乘(*)、除(/)、整除(//)

# 整除是指兩個(gè)數(shù)相除,結(jié)果為向下取整

2.?取余運(yùn)算符(取模運(yùn)算)

%??# 取模,返回兩個(gè)數(shù)相除的余數(shù)

3.?冪運(yùn)算符

**

4.?一正一負(fù)的整除和取余

4.1.?整除時(shí)結(jié)果向下取整


4.2.?取余時(shí)要公式:余數(shù)=被除數(shù)-除數(shù)*商

(2)、賦值運(yùn)算符(=)

1.?執(zhí)行順序

從右到左

2.?支持內(nèi)容

2.1.?支持鏈?zhǔn)劫x值:a?=?b?=?c?=?10

# 實(shí)際只有一個(gè)整數(shù)對象,卻有三個(gè)引用

2.2.?支持參數(shù)賦值:+=、-=、*=、/=、//=、%=

2.3.?支持系列解包賦值:a,?b,?c?=?1,?10,?100

# 等號左右兩邊的個(gè)數(shù)要相同

# 實(shí)際上為將100賦值給c,10賦值給b,1賦值給a

交換兩個(gè)變量的值:

a, b = b, a

(3)、比較運(yùn)算符

1.?作用

對變量或表達(dá)式的結(jié)果進(jìn)行大小、真假等比較,結(jié)果為布爾類型bool(True,False)

2.?比較運(yùn)算符(比較值value)

>:大于

<:小于

>=:大于等于

<=:小于等于

!=:不等于??# 不等于為True,等于為False

==:等于??# ==比較的是值(value)

# 一個(gè)等號為賦值運(yùn)算符,兩個(gè)等號為比較運(yùn)算符

3.?比較運(yùn)算符(比較標(biāo)識id)

is:是

is not:不是


(4)、布爾運(yùn)算符

1.?作用

對布爾值(True,False)之間進(jìn)行運(yùn)算

2.?布爾運(yùn)算符

and:當(dāng)兩個(gè)運(yùn)算數(shù)都為True才為True,其余為False

or:當(dāng)兩個(gè)運(yùn)算數(shù)都為False才為False,其余為True

not:如果運(yùn)算數(shù)為True/False,運(yùn)算結(jié)果為False/True

in:如果x在x里面為True,反之False

not in:如果x不在x里面為True,反之False

(5)、位運(yùn)算符

1.?作用

將數(shù)據(jù)轉(zhuǎn)成二進(jìn)制進(jìn)行計(jì)算

2.?位運(yùn)算符

按位與(&):對應(yīng)數(shù)位都是1,結(jié)果數(shù)位為1,否則為0

按位或(|):對應(yīng)數(shù)位都是0,結(jié)果數(shù)位為0,否則為1

左移位(<<):高位溢出舍棄,低位補(bǔ)0

右移位(>>):低位溢出舍棄,高位補(bǔ)0

(6)、運(yùn)算符的優(yōu)先級

1.?優(yōu)先級

算術(shù)運(yùn)算【(**)->(*,/,//,%)->(+,-)】

->位運(yùn)算【(<<,>>)->(&)->(|)】

->比較運(yùn)算【(>,<,>=,<=,==,!=)】

->布爾運(yùn)算【(and)->(or)】

->賦值運(yùn)算符【(=)】

2.?有括號()

有括號的時(shí)候會(huì)先計(jì)算括號中的內(nèi)容


十二、程序的組織結(jié)構(gòu)

1.?順序結(jié)構(gòu)

程序從上到下順序地執(zhí)行代碼,中間沒有任何的判斷和跳轉(zhuǎn),直到程序結(jié)束

2.?分支結(jié)構(gòu)(選擇結(jié)構(gòu))

3.?循環(huán)結(jié)構(gòu)

# 分支結(jié)構(gòu)(選擇結(jié)構(gòu))和循環(huán)結(jié)構(gòu)后面會(huì)說


十三、對象的布爾值

1.?對象

Python中一切皆對象,所有對象都有一個(gè)布爾值(True,False)

2.?獲取對象的布爾值

使用內(nèi)置函數(shù)bool()

3.?布爾值為False的對象

False

數(shù)值0

None

空字符串

空列表

空元組

空字典

空集合

# 除以上的對象,其他對象的布爾值都為True


十四、分支結(jié)構(gòu)(選擇結(jié)構(gòu))

(1)、單分支結(jié)構(gòu)

1.?什么是分支結(jié)構(gòu)(選擇結(jié)構(gòu))

程序根據(jù)判斷條件的布爾值選擇性地執(zhí)行部分代碼,明確的讓計(jì)算機(jī)知道在什么條件下,該去做什么

2.?單分支結(jié)構(gòu)的語法

中文語義:如果......就......

語法結(jié)構(gòu):

if?條件表達(dá)式:

????條件執(zhí)行體

# 如果條件表達(dá)式為True就執(zhí)行條件執(zhí)行體,如果為False就不執(zhí)行

(2)、雙分支結(jié)構(gòu)

1.?中文語義

如果......不滿足......就......

示例:

如果n>1為True,不是就為False

2.?語法結(jié)構(gòu)

if?條件表達(dá)式:

????條件執(zhí)行體1

else:

????條件執(zhí)行體2

# 如果條件表達(dá)式為True就執(zhí)行條件執(zhí)行體1,如果為False就執(zhí)行條件執(zhí)行體2

(3)、多分支結(jié)構(gòu)

1.?中文語義

是...... 不是

是...... 不是

......

是...... 是

2.?語法結(jié)構(gòu)

if?條件表達(dá)式1:??# 注意冒號

????條件執(zhí)行體1

elif?條件表達(dá)式2:??# elif是else和if的簡寫

????條件執(zhí)行體2

elif?條件表達(dá)式N:

????條件執(zhí)行體N

else:

條件執(zhí)行體N+1

# 如果條件表達(dá)式1為True就執(zhí)行條件執(zhí)行體1,后續(xù)的不作判斷。如果為False就判斷條件表達(dá)式2,以此類推

擴(kuò)展:elif與if的區(qū)別:

if判斷完條件表達(dá)式1后,后續(xù)的繼續(xù)判斷

elif判斷完條件表達(dá)式1后,后續(xù)的不作判斷

兩者判斷條件表達(dá)式都為False才會(huì)執(zhí)行else的語句


(4)、嵌套if的使用

1.?語法結(jié)構(gòu)

if?條件表達(dá)式1:

if?內(nèi)層條件表達(dá)式:

內(nèi)存條件執(zhí)行體1

else:

內(nèi)存條件執(zhí)行體2

else:

條件執(zhí)行體

# 紅色的是一對,稱為Y分支結(jié)構(gòu)。藍(lán)色的是一組,藍(lán)色的是給紅色if為Ture的時(shí)候去做的一個(gè)條件執(zhí)行體

(5)、條件表達(dá)式

1.?什么是條件表達(dá)式

條件表達(dá)式是if......else的簡寫??# 用于簡化代碼

2.?語法結(jié)構(gòu)

x?if?判斷條件 else?y??# 這里空格隨意,但至少空一格

3.?運(yùn)算規(guī)則

如果判斷條件的布爾值為True,條件表達(dá)式的返回值為x。否則條件表達(dá)式的返回值為False


十五、pass語句

1.?作用

pass語句什么都不做,只是一個(gè)占位符,用在語法上需要語句的地方

2.?什么時(shí)候用

在搭建語法結(jié)構(gòu)時(shí),還沒想好代碼怎么寫的時(shí)候使用

3.?跟那些語句一起使用

if語句的條件執(zhí)行體

for-in語句的循環(huán)體

定義函數(shù)時(shí)的函數(shù)體


十六、range()函數(shù)的使用

1.?作用

用于生成一個(gè)整數(shù)序列出?# 序列指的是被排成一列的對象

2.?創(chuàng)建range對象的三種方式

2.1.?range(stop):創(chuàng)建一個(gè)[0,stop)之間的整數(shù)序列,步長為1

2.2.?range(start,stop):創(chuàng)建一個(gè)[start,stop)之間的整數(shù)序列,步長為1

2.3.?range(start,stop,step):創(chuàng)建一個(gè)[start,stop)之間的整數(shù)序列,步長為step

# [指的是大/小于等于,(指的是大/小于,所以在這個(gè)整數(shù)序列中包含start但不包含stop,也就是半開半閉區(qū)間。步長指的是相鄰的兩個(gè)數(shù)相差多少,默認(rèn)為1。start、stop和step必須為整數(shù)。

3.?in與not in

可以使用in與not in判斷整數(shù)序列中是否存在(不存在)指定的整數(shù)

4.?range類型的優(yōu)點(diǎn)

不管range對象表示的整數(shù)序列有多長,所有range對象占用的內(nèi)存空間都是相同的,因?yàn)橹恍枰鎯?chǔ)start、stop和step,只有當(dāng)用到range對象時(shí),才會(huì)去計(jì)算序列中的相關(guān)元素


十七、循環(huán)結(jié)構(gòu)

(1)、循環(huán)

反復(fù)做同一件事情的情況,稱為循環(huán)

(2)、while循環(huán)

1.?語法結(jié)構(gòu)

while?條件表達(dá)式:

????條件執(zhí)行體(循環(huán)體)

# 如果條件表達(dá)式的值為True,就執(zhí)行條件執(zhí)行體,然后繼續(xù)判斷條件表達(dá)式。如果為Fasle就結(jié)束循環(huán)

2.?if與while的區(qū)別

if只判斷一次,條件為True執(zhí)行一行

while判斷N+1次,條件為True執(zhí)行N次

3.?四步循環(huán)法

·?初始化變量

·?條件判斷

·?條件執(zhí)行體(循環(huán)體)

·?改變變量

(3)、for-in循環(huán)

1.?in

in表達(dá)從(字符串、序列等)中依次取值,又稱為遍歷

for-in遍歷的對象必須是可迭代對象

# 目前已學(xué)的當(dāng)中,只有兩個(gè)可迭代對象:字符串與序列

2.?語法結(jié)構(gòu)

for?自定義的變量 in?可迭代對象:

循環(huán)體

# 每一次循環(huán)取一個(gè)值,依次取值,直到結(jié)束

# 如果不需要自定義變量,可將自定義變量寫為下劃線_


十八、流程控制語句

(1)、break語句

1.?作用

用于結(jié)束循環(huán)結(jié)構(gòu),通常與分支結(jié)構(gòu)if一起使用

# 執(zhí)行到break會(huì)跳出循環(huán),叫做非正常結(jié)束循環(huán)

2.?示意圖

2.1.?for-in:

2.2.?while:

(2)、continue語句

1.?作用

用于結(jié)束當(dāng)前循環(huán),進(jìn)入下一次循環(huán),通常與分支結(jié)構(gòu)中的if一起使用

2.?示意圖

2.1.?for-in:


2.2.?while:

(3)、else語句

1.?else語句配合使用的兩種情況

1.1.?與if配合使用:if條件表達(dá)式不成立時(shí)執(zhí)行else

1.2.?與while或for-in配合使用:沒有碰到流程控制語句時(shí)執(zhí)行else

# 第二種情況也可以不用else,直接在后面寫


# 以下內(nèi)容屬于"十七、循環(huán)結(jié)構(gòu)"

(4)、嵌套循環(huán)

1.?什么是嵌套循環(huán)

循環(huán)結(jié)構(gòu)中又嵌套了另外的完整的循環(huán)結(jié)構(gòu),其中內(nèi)層循環(huán)做為外層循環(huán)的循環(huán)的循環(huán)體執(zhí)行

# 在循環(huán)中執(zhí)行循環(huán)

擴(kuò)展:

end='\t'

print()函數(shù)默認(rèn)是end='\n'(末尾換行)。end='\t'把末尾改為TAB,從而使不換行。同樣也可以改為end=' ',使末尾加一個(gè)空格字符,也不會(huì)換行。

(5)、二重循環(huán)中的break與continue

二層循環(huán)中的break和continue用于控制本層循環(huán)

# 內(nèi)層循環(huán)中的break和continue不影響外層循環(huán)的繼續(xù)執(zhí)行


十九、列表

(1)、為什么需要列表

1.?存儲(chǔ)

變量可以存儲(chǔ)一個(gè)元素(對象),列表可以存儲(chǔ)N多個(gè)元素(對象),程序可以方便地對這些數(shù)據(jù)進(jìn)行整體操作

2.?在其他語言中

列表相當(dāng)于其他語言中的數(shù)組

(2)、列表對象的創(chuàng)建

1.?使用中括號創(chuàng)建

列表對象名+賦值號+中括號??# 元素之間使用英文的逗號進(jìn)行分隔

示例:

A = [1, 2.0, '3']

2.?調(diào)用內(nèi)置函數(shù)list()

list([])

示例:

A = list([1, 2.0, '3'])

3.?空列表

創(chuàng)建一個(gè)空列表

列表對象名=[]

列表對象名=list()

(3)、列表的特點(diǎn)

1.?列表元素按順序有序排序

列表中每個(gè)元素有序排序,不會(huì)無序排序

2.?索引映射唯一一個(gè)數(shù)據(jù)

列表中每個(gè)元素通過索引去獲取,索引從0開始(從前往后),或從-1開始(從后往前),通過索引可定位唯一一個(gè)元素

3.?列表可以存儲(chǔ)重復(fù)數(shù)據(jù)

列表可以存儲(chǔ)重復(fù)的數(shù)據(jù),不論多少個(gè)

4.?任意數(shù)據(jù)類型可以混存

列表可以存儲(chǔ)不同的數(shù)據(jù)類型,具有更大的包容性

5.?根據(jù)需要?jiǎng)討B(tài)分配和回收內(nèi)存

無論存多少個(gè)元素,都會(huì)根據(jù)多少動(dòng)態(tài)分配內(nèi)存空間

(4)、列表元素的查詢操作

1.?獲取列表中指定元素的索引

使用index()來獲取:列表名.index(元素)

1.1.?如查列表中存在N個(gè)相同元素,只返回相同元素中的第一個(gè)元素的索引

1.2.?如查詢的元素在列表中不存在,則會(huì)拋出ValueError

1.3.?還可以在指定的start和stop之間進(jìn)行查找(在指定范圍查找)

# index(元素,start,stop) 不包括stop

2.?獲取列表中的單個(gè)元素

列表名[]

2.1.?正向索引

從0到N-1??# N為元素的個(gè)數(shù)

2.2.?逆向索引

從-N到-1

2.3.?指定索引不存在

拋出IndexError

3.?獲取列表中的多個(gè)元素(切片操作)

3.1.?語法格式

列表名[start:stop:step]

# 關(guān)于strat,stop和step到十六、range()函數(shù)的使用查看

# 切片在列表的增加操作、刪除操作與修改操作也有涉及

3.2.?切片的結(jié)果

原列表片段的拷貝??# 新切出來的是一個(gè)新的列表對象

3.3.?切片的范圍

[strat,stop)

3.4.?切片中的step

step默認(rèn)為1??# 簡寫為[start:stop]

3.4.1.?step為正數(shù):

[:stop:step]

strat不寫,切片的第一個(gè)元素默認(rèn)是列表的第一個(gè)元素

[strat::step]

stop不寫,切片的最后一個(gè)元素默認(rèn)是列表的最后一個(gè)元素

# 以上都是從start開始往后計(jì)算切片的

3.4.2.?step為負(fù)數(shù):

[:stop:step]

strat不寫,切片的第一個(gè)元素默認(rèn)是列表的最后一個(gè)元素

[strat::step]

stop不寫,切片的最后一個(gè)元素默認(rèn)是列表的第一個(gè)元素

# 以上都是從start開始往前計(jì)算切片的,而且不包括stop

4.?判斷指定元素在列表中是否存在

使用in或not in:

元素 in 列表名

元素 not in 列表名

5.?列表元素的遍歷

使用for-in循環(huán):

for 自定義變量?in 列表名(可迭代對象):

????操作

(5)、列表元素的增加操作

# 以下操作是在原列表的基礎(chǔ)上增加元素,不會(huì)產(chǎn)生新的列表對象

1.?append()

在列表的末尾添加一個(gè)元素

列表名.append(元素)

2.?extend()

在列表的末尾添加至少一個(gè)元素

列表名.extend(元素)

3.?append與extend的區(qū)別

append是向末尾只添加一個(gè)元素,而extend是向末尾添加多個(gè)元素

4.?insert()

在列表的任意位置添加一個(gè)元素

列表名.insert(索引,元素)

5.?切片

在列表的任意位置添加至少一個(gè)元素

列表名[start:stop:step]=元素??# 不包括stop

6.?insert與切片的區(qū)別

insert是只向任意位置添加一個(gè)元素,而切片是切掉一部分元素?fù)Q成另外一部分元素

(6)、列表元素的刪除操作

1.?remove()

·?一次刪除一個(gè)元素

·?重復(fù)元素只刪除第一個(gè)

·?元素不存在拋出ValueError

·?不會(huì)產(chǎn)生新的列表對象

列表名.remove(元素)

2.?pop()

·?刪除一個(gè)指定索引位置上的元素

·?指定索引不存在拋出IndexError

·?不指定索引,刪除列表中最后一個(gè)元素

·?不會(huì)產(chǎn)生新的列表對象

列表名.pop(索引)

3.?切片

·?一次至少刪除一個(gè)元素

·?會(huì)產(chǎn)生新的列表對象,原列表不會(huì)改變

·?用[](空列表)進(jìn)行替掉時(shí),不產(chǎn)生新的列表對象,而是刪除原列表中的內(nèi)容

新列表名=原列表名[start:stop:step]

原列表名[start:stop:step]=[]


4.?clear()與del

clear是清除列表,將列表中的元素清除掉

列表名.clear()

del是刪除列表,會(huì)刪除整個(gè)列表對象

del 列表名

(7)、列表元素的修改操作

1.?指定索引的元素賦予一個(gè)新值

列表名[索引]=元素(新值)

2.?指定的切片賦予一個(gè)新值

列表名[start:stop:step]=元素(新值)

# 這里的start、stop和step與前面切片操作相同


(8)、列表元素的排序操作

對列表當(dāng)中的元素進(jìn)行由小到大,或由大到小的一個(gè)排序操作

常見的兩種方式:

1.?調(diào)用sort()方法

對列表中的所有元素默認(rèn)按照從小到大的順序進(jìn)行排序

列表名.sort()

2.?調(diào)用內(nèi)置函數(shù)sorted()

對列表中的所有元素默認(rèn)按照從小到大的順序進(jìn)行排序,原列表不發(fā)生改變,會(huì)產(chǎn)生新的列表對象

sorted(列表名)

3.?reverse

·?可以指定reverse=True來進(jìn)行降序排序

·?reverse默認(rèn)為False,為升序排序

列表名.sort(reverse=True)

sorted(列表名,reverse=True)

4.?注意事項(xiàng)

int類型與str類型,str類型與bool類型之間不能進(jìn)行排序

(9)、列表生成式

1.?什么是列表生成式

生成列表的一個(gè)公式的簡稱

2.?語法格式

[i*i for i in range(1,10)]

[表示列表元素的表達(dá)式 for 自定義變量 in 可迭代對象]

# “表示列表元素的表達(dá)式”中通常包含“自定義變量”


二十、字典

(1)、什么是字典

1.?字典

·?字典是Python內(nèi)置的數(shù)據(jù)結(jié)構(gòu)之一,與列表一樣是一個(gè)可變序列

# 可變序列指數(shù)據(jù)結(jié)構(gòu)可執(zhí)行增刪改操作

·?字典是由花括號{}定義的

·?以鍵值對(鍵:值)的方式存儲(chǔ)數(shù)據(jù),字典是一個(gè)無序(無順序排列)的序列

# 鍵值對指的是一對一對存儲(chǔ)的元素

字典名={鍵:值,鍵:值......}

2.?字典示意文本

hash(key3) key3->value3

hash(key4) key4->value4

?

hash(key1) key1->value1

hash(key5) key5->value5

hash(key2) key2->value2

# key1,2,3,4,5指的是第幾個(gè)放入字典中的鍵

# 字典是無序的序列,因?yàn)橐?jīng)過hash函數(shù)的工序(->把鍵放在hash函數(shù)之中去計(jì)算(計(jì)算:你要進(jìn)行存儲(chǔ)的位置)),所以鍵的位置是通過hash函數(shù)計(jì)算得來的

# 因?yàn)槭莌ash函數(shù)計(jì)算得來的,所以要求放在字典中的鍵必須是一個(gè)不可變序列(創(chuàng)建之后不可修改),否則具有不確定因素(鍵改變),例如整數(shù)序列和字符串就是不可變序列

(2)、字典的實(shí)現(xiàn)原理

字典的實(shí)現(xiàn)原理與查字典類似,Python中的字典是根據(jù)key查找value所在的位置

# hash函數(shù)類似查字典時(shí)的找部首和算筆畫

(3)、字典的創(chuàng)建

1.?使用花括號創(chuàng)建

字典名={鍵:值,鍵:值......}

2.?使用內(nèi)置函數(shù)dict()創(chuàng)建

dict(鍵=值,鍵=值......)

# 這里的鍵由于是賦值形式,所以左側(cè)的鍵不加任何符號

3.?空字典

創(chuàng)建一個(gè)空字典

字典名={}

字典名=dict()

# 相同的鍵會(huì)變成一個(gè),也就是不能重復(fù)

(4)、字典的常用操作

1.?字典中元素的獲取

1.1.?[]

字典名[鍵]

1.2.?get()方法

字典名.get(鍵)

1.3.?[]與get()的區(qū)別

如果查找的鍵不存在,[]會(huì)報(bào)錯(cuò)(KeyError),get()不會(huì)報(bào)錯(cuò),會(huì)輸出一個(gè)None,如果指定了默認(rèn)值,就會(huì)在鍵值不存在時(shí)返回默認(rèn)值

字典名.get(鍵,默認(rèn)值)

2.?字典元素的增刪改以及判斷操作

2.1.?key的判斷

使用in或not in判斷指定的鍵在字典中是否存在

鍵 in 字典名/鍵 not in 字典名

2.2.?字典元素的刪除

使用del語句刪除指定的鍵值對

del 字典名[鍵]

# 同樣可以用clear清空字典的元素與del刪除字典:字典名.clear(),del 字典名

# 也可以使用 字典名.pop(鍵) 與del的區(qū)別是pop有返回值,del直接刪除

2.3.?字典元素的新增和修改

字典名[鍵]=值

3.?獲取字典視圖

3.1.?keys()

獲取字典中所有key,數(shù)據(jù)類型為dict_keys

字典名.keys()

3.2.?values()

獲取字典中所有value,數(shù)據(jù)類型為dict_values

字典名.values()

3.3.?items()

獲取字典中所有key,value對,數(shù)據(jù)類型為dict_items

字典名.items()

# items()獲取的鍵值對是元組形式的

# 可以使用list函數(shù)將字典視圖轉(zhuǎn)為列表

4.?字典元素的遍歷

for item in 字典名:

????print(item)

# item(自定義變量)獲取的是字典當(dāng)中的鍵,如果要獲取值,可以使用 字典名[item] 或 字典名.get(item)


(5)、字典的特點(diǎn)

·?字典中的所有元素都是一個(gè)key-value對(鍵值對),key不允許重復(fù),重復(fù)將會(huì)覆蓋,value可以重復(fù)

·?字典中的元素是無序的

·?字典中的key必須是不可變對象

·?字典也可以根據(jù)需要?jiǎng)討B(tài)地伸縮,內(nèi)存隨著元素的加或減而加或減

·?字典會(huì)浪費(fèi)較大的內(nèi)存,但查詢速度快,是一種使用空間換時(shí)間的數(shù)據(jù)結(jié)構(gòu)

(6)、字典生成式

1.?內(nèi)置函數(shù)zip()

用于將可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個(gè)元組,然后返回由這些元組組成的列表,返回的元素個(gè)數(shù)以少的那個(gè)為基準(zhǔn)

2.?字典生成式

將兩個(gè)列表中的第一個(gè)(items)作為字典中的key,第二個(gè)(prices)作為字典中的value

{表示字典key的表達(dá)式:表示字典value的表達(dá)式 for 自定義表示key的變量,自定義表示value的變量 in zip(可迭代對象,可迭代對象)}

{item.upper():price for item,price in zip(items,prices)}


二十一、元組

(1)、什么是元組

1.?元組

元組是Python內(nèi)置的數(shù)據(jù)結(jié)構(gòu)之一,是一個(gè)不可變序列

元組名=(元素對象,元素對象,元組對象......)

2.?不可變序列與可變序列

不可變序列:字符串、元組等,沒有增、刪、改操作

可變序列:列表、字典等,可以對序列執(zhí)行增、刪、改操作,對象地址不發(fā)生更改

(2)、元組的創(chuàng)建方式

1.?創(chuàng)建方式

1.1.?直接使用小括號()

元組名=(元素對象,元素對象,元組對象......)

1.2.?使用內(nèi)置函數(shù)tuple()

元組名=tuple((元素對象,元素對象,元組對象......))

# 如果是單層括號,里面要是可迭代對象(列表、元組、字典、字符串):

元組名=tuple(可迭代對象)

1.3.?空元組

創(chuàng)建一個(gè)空元組

元組名=()

元組名=tuple()

2.?注意事項(xiàng)

如果元組當(dāng)中只包含一個(gè)元素,需要使用逗號和小括號(如果沒逗號會(huì)被認(rèn)為是本身的數(shù)據(jù)類型)

元組名=(元素對象,)

3.?關(guān)于元組的索引與切片

元組也有索引與切片,其用法與列表相同,用于獲取元素或索引


(3)、元組為什么要設(shè)計(jì)成不可變序列

1.?原因

·?避免由于修改數(shù)據(jù)而導(dǎo)致出錯(cuò)

·?在多任務(wù)環(huán)境下,同時(shí)操作對象時(shí)不需要加鎖

# 多個(gè)操作同時(shí)進(jìn)行,不需要依次進(jìn)行

·?因此,在程序中盡量使用不可變序列

2.?注意事項(xiàng)

元組中存儲(chǔ)的是對象的引用

·?如果元組中對象是不可變對象,則不能再引用其它對象

·?如果元組中對象是可變對象,則可變對象的引用不允許改變,但數(shù)據(jù)可以改變

(4)、元組的遍歷

元組是可迭代對象,所以可以使用for...in進(jìn)行遍歷

for item in 元組名:

print(item)

# item是自定義變量


二十二、集合

集合的概述與創(chuàng)建

1.?集合的概述

·?Python語言提供的內(nèi)置數(shù)據(jù)結(jié)構(gòu)

·?與列表、字典一樣都屬于可變類型的序列

·?集合是沒有value的字典,所以集合也是一個(gè)無序的序列

·?集合也是由花括號{}定義的

2.?示意文本

hash(dataE)->dataE

hash(dataB)->dataB

?

hash(dataA)->dataA

hash(dataC)->dataC

hash(dataD)->dataD

# ABCDE是向集合中添加元素的順序,同樣也是hash函數(shù)計(jì)算位置

3.?集合的創(chuàng)建

3.1.?使用花括號{}創(chuàng)建

集合名={元素,元素,元素......}

# 集合中的元素不允許重復(fù),否則重復(fù)的變?yōu)橐粋€(gè)

3.2.?使用內(nèi)置函數(shù)set()

集合名=

set(range(4))??# range

set([1,2,3])??# 列表

set((1,2,3))??# 元組

set('ABC')??# 字符串,元素為'A','B','C'

set({1,2,3})??# 集合

3.3.?空集合

定義一個(gè)空集合

集合名=set()??# 如果是={},類型為字典

(1)、集合的相關(guān)操作

1.?集合元素的判斷操作

使用in或not in檢查集合中是否存在指定的元素

2.?集合元素的新增操作

2.1.?調(diào)用add()方法,添加一個(gè)元素

集合名.add(元素)

2.2.?調(diào)用update()方法,至少添加一個(gè)元素

·?集合名.update({元素,元素......})?# 集合

·?集合名.update([元素,元素......])?# 列表

...... # 與上面set創(chuàng)建類似,也可以添加字符串和元組等

# 關(guān)于一個(gè)和至少一個(gè),可以參照列表元素的增加操作


3.?集合元素的刪除操作

3.1.?調(diào)用remove()方法,一次刪除一個(gè)指定元素,如果不存在拋出KeyError

集合名.remove(元素)

3.2.?調(diào)用discard()方法,一次刪除一個(gè)指定元素,如果不存在不會(huì)拋異常

集合名.discard(元素)

3.3.?調(diào)用pop()方法,一次只刪除一個(gè)任意元素

集合名.pop()

3.4.?調(diào)用clear()方法,清空集合

集合名.clear()

3.5.?調(diào)用del方法,刪除集合

del 集合名

(2)、集合間的關(guān)系

1.?判斷兩個(gè)集合是否相等

可以使用運(yùn)算符==或!=進(jìn)行判斷

集合A ==/!= 集合B

2.?判斷一個(gè)集合是否是另一個(gè)集合的子集

# 子集定義:一般地,對于兩個(gè)集合A,B,如果集合A中任意一個(gè)元素都是集合B中的元素,我們就說這兩個(gè)集合有包含關(guān)系,稱集合A為集合B的子集,

記作A?B(或B?A),讀作“A含于B”(或“B包含A”)

注:子集定義轉(zhuǎn)摘自《數(shù)學(xué) 必修1A版/普通高中課程標(biāo)準(zhǔn)實(shí)驗(yàn)教科書》,下面的交集定義、并集定義同上

可以調(diào)用方法issubset進(jìn)行判斷

集合A.issubset(集合B)?# 集合A是否是集合B的子集,返回布爾值

3.?判斷一個(gè)集合是否是另一個(gè)集合的超集

# 超集定義:集合A中的每一個(gè)元素都在集合B中,且集合A中可能包含B中沒有的元素,那么集合A就是集合B的超集,相當(dāng)于子集反過來

可以調(diào)用方法issuperset進(jìn)行判斷

集合A.issuperset(集合B)??# 集合A是否是集合B的超集,返回布爾值

4.?判斷兩個(gè)集合是否沒有交集

# 交集定義:一般地,由屬于集合A且屬于集合B的所有元素組成的集合,稱為A與B的交集,記作A∩B(讀作“A交B”)

可以調(diào)用方法isdisjoint進(jìn)行判斷

集合A.isdisjoint(集合B)??# 集合A與集合B是否沒交集,返回布爾值

(3)、集合的數(shù)學(xué)(數(shù)據(jù))操作

1.?兩個(gè)集合的交集操作

調(diào)用方法intersection或&進(jìn)行交集操作

集合A.intersection(集合B)/集合A & 集合B

# &在Python集合中是求交集的意思

# 輸出集合A與集合B的交集部分

2.?兩個(gè)集合的并集操作

# 并集定義:一般地,由所有屬于集合A或?qū)儆诩螧的元素組成的集合,稱為集合A與集合B的并集,記作A∪B(讀作“A并B”)

調(diào)用方法union或|進(jìn)行并集操作

集合A.union(集合B)/集合A | 集合B

# |在Python集合中是并集的意思

# 輸出集合A與集合B所有的元素,去掉重復(fù)元素

3.?兩個(gè)集合的差集操作

# 差集定義:設(shè)A,B是兩個(gè)集合,則所有屬于A且不屬于B的元素構(gòu)成的集合,叫做集合A與集合B的差集,記作A-B

調(diào)用方法difference或-進(jìn)行差集操作

集合A.difference(集合B)/集合A-集合B

# -在Python集合中是差集的意思

# 輸出集合A與集合B的差集部分(集合A中的元素-與集合B交集的部分)

4.?兩個(gè)集合的對稱差集操作

# 對稱差集定義:設(shè)A,B是兩個(gè)集合,則集合A與集合B中所有不屬于A與B并集的元素構(gòu)成的集合為集合A與集合B的對稱差集(A∪B)—(A∩B),記作A△B

調(diào)用方法symmetric_difference或^進(jìn)行對稱差集操作

集合A.symmetric_difference(集合B)/集合A^集合B

# ^在Python集合中是對稱差集的意思

# 輸出集合A與集合B的對稱差集(集合A與集合B的并集和集合A與集合B的交集的差集)


5.?集合生成式

# 集合生成式跟列表生成式類似,就是將[]改成{}

5.1.?概念

用于生成集合的公式

5.2.?語法格式

{i*i for i in range(1,10)}

{表示集合元素的表達(dá)式 for 自定義變量 in 可迭代對象}

(4)、列表、元組、字典、集合總結(jié)

Python四種常用的數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)

是否可變

是否重復(fù)

是否有序

定義符號

列表(list)

可變

可重復(fù)

有序

[]

元組(tuple)

不可變

可重復(fù)

有序

()

字典(dict)

可變

key不可重復(fù)

無序

(key:value)

value可重復(fù)

集合(set)

可變

不可重復(fù)

無序

{}


二十三、字符串

(1)、字符串的創(chuàng)建與駐留機(jī)制

1.?字符串

在Python中字符串是基本數(shù)據(jù)類型,是一個(gè)不可變的字符序列

2.?定義(創(chuàng)建)字符串

使用單引號(')、雙引號(")以及三引號進(jìn)行定義

3.?字符串駐留機(jī)制

僅保存一份相同且不可變字符串的方法,不同的值被存放在字符串的駐留池中,Python的駐留機(jī)制對相同的字符串只保留一份拷貝,后續(xù)創(chuàng)建相同字符串時(shí),不會(huì)開辟新空間,而是把該字符串的地址賦給新創(chuàng)建的變量

3.1.?駐留機(jī)制的幾種情況(使用交互模式)

# win+r輸入cmb再輸入py進(jìn)入(PyCharm里Alt+F12再輸入py也可以進(jìn)入)

·?字符串的長度為0或1時(shí)

·?符合標(biāo)識符的字符串?# 有關(guān)標(biāo)識符可在前面第四章找到

·?字符串只在編譯時(shí)進(jìn)行駐留,而非運(yùn)行時(shí)

·?[-5,256]之間的整數(shù)數(shù)字?# 包括256

擴(kuò)展:join()方法:

將序列中的元素以指定的字符連接生成一個(gè)新的字符串

字符串.join(序列)

# 具體在本章(2)中的6.2查看

3.1.1.?sys中的intern方法強(qiáng)制2個(gè)字符串指向同一個(gè)對象

import sys?# 導(dǎo)入sys模塊

變量A=sys.intern(變量B)

3.1.2.?PyCharm對字符串進(jìn)行了優(yōu)化處理

將一些原本不駐留的處理成駐留的

4.?字符串駐留機(jī)制的優(yōu)缺點(diǎn)

·?當(dāng)需要值相同的字符串時(shí),可以直接從字符串池里拿來使用,避免頻繁的創(chuàng)建和銷毀,提升效率和節(jié)約內(nèi)存,因此拼接字符串和修改字符串是會(huì)比較影響性能的。

·?在需要進(jìn)行字符串拼接時(shí)建議使用str類型的join方法,而非+,因?yàn)閖oin()方法是先計(jì)算出所有字符中的長度,然后再拷貝,只創(chuàng)建一次對象,效率要比“+”效率高

(2)、字符串的常用操作

1.?字符串的查詢操作

1.1.?index()

查找子串(substr)第一次出現(xiàn)的位置,如果查找的子串不存在時(shí),則拋出ValueError

字符串.index(字符串)

1.2.?rindex()

查找子串(substr)最后一次出現(xiàn)的位置,如果查找的子串不存在時(shí),則拋出ValueError

字符串.rindex(字符串)

1.3.?find()

查找子串(substr)第一次出現(xiàn)的位置,如果查找的子串不存在時(shí),則返回-1

字符串.find(字符串)

1.4.?rfind()

查找子串(substr)最后一次出現(xiàn)的位置,如果查找的子串不存在時(shí),則返回-1

字符串.rfind(字符串)

2.?字符串的大小寫轉(zhuǎn)換操作

2.1.?upper()

把字符串中所有字符都轉(zhuǎn)成大寫字母

字符串.upper()

2.2.?lower()

把字符串中所有字符都轉(zhuǎn)成小寫字母

字符串.lower()

2.3.?swapcase()

把字符串中所有大寫字母轉(zhuǎn)成小寫字母,把所有小寫字母都轉(zhuǎn)成大寫字母

字符串.swapcase()

2.4.?capitalize()

把第一個(gè)字符轉(zhuǎn)換為大寫,把其余字符轉(zhuǎn)換為小寫

字符串.capitalize()

2.5.?title()

把每個(gè)單詞的第一個(gè)字符轉(zhuǎn)換為大寫,把每個(gè)單詞的剩余字符轉(zhuǎn)換為小寫

字符串.title()

# 字符串是不可變序列,轉(zhuǎn)換后產(chǎn)生一個(gè)新的字符串對象


3.?字符串內(nèi)容對齊操作

3.1.?center()

居中對齊

字符串.center(整數(shù),字符串)

第1個(gè)參數(shù)指定寬度,第2個(gè)參數(shù)指定填充符,第2個(gè)參數(shù)是可選的,默認(rèn)是空格,如果設(shè)置寬度小于等于實(shí)際寬度則返回原字符串

3.2.?ljust()

左對齊

字符串.ljust(整數(shù),字符串)

第1個(gè)參數(shù)指定寬度,第2個(gè)參數(shù)指定填充符,第2個(gè)參數(shù)是可選的,默認(rèn)是空格,如果設(shè)置寬度小于等于實(shí)際寬度則返回原字符串

3.3.?rjust()

右對齊

字符串.rjust(整數(shù),字符串)

第1個(gè)參數(shù)指定寬度,第2個(gè)參數(shù)指定填充符,第2個(gè)參數(shù)是可選的,默認(rèn)是空格,如果設(shè)置寬度小于等于實(shí)際寬度則返回原字符串

3.4.?zfill()

右對齊,左邊用0填充

字符串.zfill(整數(shù))

該方法只接收一個(gè)參數(shù),用于指定字符串的寬度,如果指定的寬度小于等于字符串的長度,返回字符串本身

# zfill()在字符串前有“-”或“+”時(shí),0加在符號右邊


4.?字符串的劈分

4.1.?split()

·?從字符串的左邊開始劈分,默認(rèn)的劈分字符是空格字符串,返回的值都是一個(gè)列表

·?通過參數(shù)sep指定劈分字符串的劈分符

·?通過參數(shù)maxsplit指定劈分字符串時(shí)的最大劈分次數(shù),在經(jīng)過最大次劈分之后,剩余的子串會(huì)單獨(dú)作為一部分

字符串.split(sep=字符串,maxsplit=整數(shù))???

# ()里可選,默認(rèn)劈分符和劈分次數(shù),并且sep和maxsplit可以不寫:

字符串.split(字符串,整數(shù))

4.2.?rsplit()

·?從字符串的右邊開始劈分,默認(rèn)的劈分字符是空格字符串,返回的值都是一個(gè)列表

·?通過參數(shù)sep指定劈分字符串的劈分符

·?通過參數(shù)maxsplit指定劈分字符串時(shí)的最大劈分次數(shù),在經(jīng)過最大次劈分之后,剩余的子串會(huì)單獨(dú)作為一部分

字符串.rsplit(sep=字符串,maxsplit=整數(shù))

5.?字符串的判斷操作

5.1.?isidentifier()

判斷指定的字符串是不是合法的標(biāo)識符

字符串.isidentifier()

5.2.?isspace()

判斷指定的字符串是否全部由空白字符組成(回車、換行、水平制表符)

字符串.isspace()

5.3.?isalpha()

判斷指定的字符串是否全部由字母組成

字符串.isalpha()

# 由漢字組成也返回True

5.4.?isdecimal()

判斷指定的字符串是否全部由十進(jìn)制的數(shù)字組成

字符串.isdecimal()

5.5.?isnumeric()

判斷指定的字符串是否全部由數(shù)字(字符)組成

字符串.isnumeric()

# 羅馬數(shù)字,漢字?jǐn)?shù)字等也屬于數(shù)字

5.6.?isalnum()

判斷指定的字符串是否全部由字母和數(shù)字組成

字符串.isalnum()

6.?字符串的替換與合并操作

6.1.?字符串的替換:replace()

字符串.replace(字符串,字符串,整數(shù))

# 整數(shù)參數(shù)可選,默認(rèn)最大次數(shù)

第1個(gè)參數(shù)指定被替換的子串,第2個(gè)參數(shù)指定替換子串的字符串,第3個(gè)參數(shù)指定最大替換次數(shù),該方法返回替換后得到的字符串,替換前的字符串不發(fā)生變化

6.2.?字符串的并合:join()

將列表或元組中的字符串以指定的字符合并成一個(gè)新字符串

字符串.join(序列)

# 序列還可以是字典、集合或字符串,但字典只對鍵進(jìn)行連接,集合是無序的,字符串作為字符串序列


(3)、字符串的比較操作

1.?運(yùn)算符

>,>=,<,<=,==,!=

2.?比較規(guī)則

首先比較兩個(gè)字符串中的第一個(gè)字符,如果相等則繼續(xù)比較下一個(gè)字符,依次比較下去,直到兩個(gè)字符串中的字符不相等時(shí),其比較結(jié)果就是兩個(gè)字符串的比較結(jié)果,兩個(gè)字符串中的所有后續(xù)字符將不再被比較

3.?比較原理

兩個(gè)字符進(jìn)行比較時(shí),比較的是其ordinal value(原始值),調(diào)用內(nèi)置函數(shù)ord可以得到指定字符的ordinal value。與內(nèi)置函數(shù)ord對應(yīng)的是內(nèi)置函數(shù)chr,調(diào)用內(nèi)置函數(shù)chr時(shí)指定ordinal value可以得到其對應(yīng)的字符

ord(字符串)

chr(整數(shù))

4.?==與is的區(qū)別

==比較的是value是否相等

is比較的是id是否相等


(4)、字符串的切片操作

# 索引和切片具體可以到第十九章(4)中的2、3查看

·?字符串是不可變序列

·?不具備增、刪、改等操作

·?切片操作將產(chǎn)生新的對象

字符串[start:end:step]

(5)、格式化字符串

1.?格式化字符串

按一定格式輸出的字符串,實(shí)際上就是一個(gè)字符串的拼接操作

2.?為什么需要格式化字符串

減少內(nèi)存空間浪費(fèi)

3.?格式化字符串的方式

3.1.?%作占位符

定義的格式化字符串%(實(shí)際值,實(shí)際值...)

定義的格式化字符串每個(gè)%的位置與后面的實(shí)際值的位置相對應(yīng)

%s:字符串

%i或%d:整數(shù)

%f:浮點(diǎn)數(shù)

3.2.?{}作占位符

定義的格式化字符串.format(實(shí)際值,實(shí)際值...)

定義格式化字符串每個(gè){}里的數(shù)字與后面實(shí)際值的正向索引相對應(yīng)

# {}未指定索引時(shí),與%方式一樣{}位置與實(shí)際值位置相對應(yīng)

3.3.?Python 3以上的f-string

f定義的格式化字符串

定義格式化字符串{}里填寫實(shí)際值

4.?指定寬度和精度

%[寬度][精度][格式]

{[索引]:[寬度][.精度]}?# {}做占位符時(shí)索引可不寫

[寬度]:總寬度

[精度]:%做占位符里是精確到小數(shù)點(diǎn)后幾位;{}做占位符里是一共幾位數(shù),后面加上f是小數(shù)點(diǎn)后

(6)、字符串的編碼轉(zhuǎn)換

1.?為什么需要字符串的編碼轉(zhuǎn)換

字符串在網(wǎng)絡(luò)當(dāng)中需要使用字節(jié)進(jìn)行傳輸時(shí),需要先轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)進(jìn)行傳輸,再轉(zhuǎn)換成字符串類型進(jìn)行顯示

2.?編碼與解碼的方式

2.1.?編碼

將字符串轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)(bytes)

字符串.encode(encoding=編碼格式)

# 編碼格式有GBK,UTF-8等。GBK一個(gè)中文占兩個(gè)字節(jié),UTF-8占三個(gè)字節(jié)

2.2.?解碼

將bytes類型的數(shù)據(jù)轉(zhuǎn)換成字符串類型

二進(jìn)制數(shù)據(jù).decode(encoding=編碼格式)

擴(kuò)展:len()內(nèi)置函數(shù)

返回對象(包括上面介紹的五種數(shù)據(jù)類型等)長度或項(xiàng)目個(gè)數(shù)

len(對象)



# 這里到達(dá)B站20000字上限了,具體內(nèi)容詳見WPS筆記

耗時(shí)600小時(shí)整理《Python教程全套》完全入門版,分享一起學(xué)習(xí)_高清附字幕的評論 (共 條)

分享到微博請遵守國家法律
济宁市| 平潭县| 神池县| 绥棱县| 达孜县| 湘乡市| 麟游县| 固原市| 大渡口区| 富顺县| 慈利县| 新化县| 东山县| 临西县| 吴川市| 五常市| 德令哈市| 长沙县| 昔阳县| 遵义县| 云霄县| 永顺县| 航空| 韶山市| 合川市| 壤塘县| 敦化市| 温泉县| 泌阳县| 宿松县| 改则县| 蒙阴县| 台北市| 玉树县| 罗田县| 大渡口区| 来凤县| 门头沟区| 镇雄县| 鄂托克旗| 惠安县|