《《python基础》》
本文主要是讓初學者了解Python,能夠看懂官網文檔
目錄
python 簡介
python 的誕生
python 的應用領域
python 的優缺點
python 的官網
python 的版本
python的官方文檔
Python起步
第一個Python程序
python 的兩種運行模式
Python 的基本輸入輸出
Python的基本輸入函數
注釋
PyCharm的使用
變量和賦值語句
賦值語句
變量
Python 的基礎數據類型
字符串
數字
算術運算符
比較運算符
表達式和語句
表達式和語句的概念
布爾運算符(也叫邏輯運算符)
if 語句
del 語句
pass 語句
條件表達式
字符串
字符串的概述及基本運用
符串的格式化表達式
字符串的常用方法(method)
while 語句
語句嵌套
break 語句
for 語句
?range 函數
continue 語句
復合賦值分隔符
容器
列表 list
python3 中常用于序列的函數
元組 tuple
字典 dict
列表、元組、字典小結
集合 set/ 固定集合 frozenset
集合和固定集合的運算
容器總結
python 簡介
python 的誕生
??????- 創始人: Guido van Rossum(荷蘭人)。
???????
??- 時 間 : 1989年圣誕節期間
?????- 地 點 : 阿姆斯特丹
??- Python命名: 源于Guido 是一個喜劇團 Monty Python 的粉絲。
python 的應用領域
??- 自動化系統運維
??- 自動化測試
??- 人工智能,機器人
??- 搜索引擎,爬蟲
??- 科學計算
??- web網站后端開發
??- 云計算
??- 大數據及數據庫編程
??- 游戲
??- 其它
python 的優缺點
?1) 優點
???????????高級:有高級的數據結構,縮短開發時間與代碼量
?????????? 面向對象:為數據和邏輯相分離的結構化和過程化編程添加了新的活力
? ???????? 可升級:提供了基本的開發模塊,可以在它上面開發軟件,實現代碼的重用
?????????? 可擴展:通過將其分離為多個文件或模塊加以組織管理
?????????? 可移植性:python是用 C 語言寫的,又由于 C 的可移植性,使得 Python 可以運行在任 何帶有 ANSI ?C編譯器的平臺上;
???????????? 易學:python 關鍵字少、結構簡單、語法清晰;
???????????? 易讀:沒有其他語言通常用來訪問變量、定義代碼塊和進行模塊匹配的命令式符號;
???????????? 內存管理器:內存管理是由python解釋器負責的;(軟件工程化思路)
??2.)缺點
?????????????- 與C/C++相比,執行速度不夠快
?????????????- 不能封閉源代碼
??????????????c語言執行能力高,python執行能力底但開發效率高
python 的官網
??- 網址: <https://www.python.org>
????世界計算語言排名網站: ??www.tiobe.com
??- 我們可以通過官網得到更多更新的信息及文檔。
python 的版本
??- Python V2.7(2020年已經結束維護)
??- Python V3.6(當前教學)
??- Python V3.9(最新)
python的官方文檔
??https://docs.python.org/zh-cn/3/
Python起步
第一個Python程序
1)編寫一個 hello.py
2)寫入內容
print('hello world!')3)Python的解釋執行器執行 hello.py
# Linux下 $ /usr/bin/python3 ~/桌面/hello.py # Windows 下 C:\> python hello.pypython 的兩種運行模式
1)使用文件解釋執行模式
先將 python 的語句。寫入xxx.py當中。然后用python3 命令解釋執行該文件
$ python3 xxx.py2)交互模式
在命令提示符下直接輸入python3命令進入交互模式。
調用exit() 退出交互模式
# Linux 下進入交互模式$ python3 <回車>>>> # 在此處可以輸入 語句和表達式(回車執行)>>> exit() # 退出交互模式,回到終端使用文件解釋執行方式示例
[root@localhost day01]# cat hello.py print('Hello World!')[root@localhost day01]# python3 hello.py Hello World!Python 的基本輸入輸出
1)Python 的輸出函數
????????print() 函數
作用:
????????向終端輸出文字信息,能讓用戶看到
????????????????當有多個數據要輸出時,中間用英文的逗號(,) 分隔開
調用格式
print(數據1, 數據2, 數據3, ..., sep=' ', end='\n')在python中主要使用print實現輸出,print是一個函數
在python中函數調用需要添加(),括號內是傳給函數的參數
print("hello world!") print("年齡是", 35) print(1, 2, 3, 4) print(1, 2, 3, 4, sep=" ", end="\n") print(1, 2, 3, 4, sep="###", end="\n\n\n") print(1, 2, 3, 4)Python的基本輸入函數
input 函數
作用
????????讓程序停下來,等待用戶輸入文字信息,返回用戶輸入文字的? 字符串
調用格式
input("提示信息")示例
name = input('請輸入您的姓名:')python中,通過input函數獲取用戶鍵盤輸入
input函數的參數是字符串,它是屏幕提示語
注釋
注釋以井號 (#) 開頭,在物理行末尾截止。
PyCharm的使用
PyCharm 下快捷鍵
ctrl + s 保存
ctrl + / 注釋和取消注釋
ctrl + d 可以復制當前行到下一行
ctrl + alt + L? 可以將程序自動格式化成 符合PEP8 編碼規范的格式
PyCharm 的調試
????????1. 設置斷點
????????2. 單步執行
變量和賦值語句
賦值語句
作用
????????創建一個自定義名字的變量,此變量可以用于綁定一個表達式執行的結果,供后續使用
語法
變量名 = 表達式 變量名1 = 變量名2 = 變量名3 = 表達式 變量名1, 變量名2, 變量名3 = 表達式1, 表達式2, 表達式3示例
one_hundred = 99 + 1 a = b = c = 200 a, b = 100, 200說明
?????? - 第一次為變量賦值,python 會創建變量,同時綁定表達式執行的結果
?????? - 第二次或者以后為變量賦值,會改變原有變量的綁定關系
?????? - python 的變量沒有類型,它綁定的對象才有類型
?????? - 變量在使用之前,必須先進行賦值
?????? - 變量賦值是一個自右向左的運算,將=右邊表達式的計算結果,賦值給左邊的變量
變量
變量是在python 內用賦值語句創建,用來綁定一個數據的有名對象
- 變量名
????????變量名必須是一個標識符
- 標識符的命名規則?
????????-第一個字母必須是英文字母或下劃線 [ A-Za-z_ ]
????????-從第二個字母起(如果有),必須是英文字母或下劃線或數字
????????????????[ A-Za-z0-9_ ]
????????????????變量名稱約定
??????? -變量名區分大小寫
- 示例
????????以下是合法的標識符
a a1 abc ABC a1b2c3d4 one_hundred count _a __ABC__ getNameAge get_name_age GetNameAge # 小駝峰 匈牙利命名法 大駝峰????????python 編程語言中的關鍵字不能作為標識符
- 推薦采用的命名方法
??????? -變量名全部采用小寫字母,如pythonstring
??????? -簡短、有意義,如pystr
??????? -多個單詞間用下劃線分隔,如py_str
??????? -變量名用名詞,函數名用謂詞(動詞+名詞),如 phone / update_phone
??????? -類名采用駝峰形式,如MyClass
- 關鍵字(keywords)
????????計算機編程語言中保留的標識符稱為關鍵字, 關鍵字不能當成普通的標識符使用
??????????????關鍵字通常用于語法標識
??????????python3.9中 的全部的關鍵字
False await else import pass None break except in raise True class finally is return and continue for lambda try as def from nonlocal while assert del global not with async elif if or yield- 示例
- 練習
????????? 答案:
name = input("請輸入您的姓名: ")password = input("請輸入您的密碼: ")print(name, '的密碼是:', password)Python 的基礎數據類型
數據類型
-
字符串 str
-
數字
-
整數 int
-
浮點數 float
-
布爾數 bool
-
-
容器
-
列表 list
-
元組 tuple
-
字典 dict
-
集合 set / 固定集合 frozenset
-
字節串 bytes / 字節數組 bytearray
-
字符串
????????程序中,用來記錄人類的文字信息的一種數據類型
- 創建字符串的字面值
- 說明
??????? -雙引號的字符串的內部的單引號不算是結束符
??????? -單引號的字符串的內部的雙引號不算是結束符???????
# I'm a teacher! print("I'm a teacher!") # 我是"kali_yao" print('我是"kali_yao"')??????? -三引號字符串的內部可以包含單引號和雙引號
# I'm a teacher! 我是"kali_yao" print('''I'm a teacher! 我是"kali_yao"''')??????? -三引號字符串又稱為所見即所得字符串, 每一次換行會轉換成換行符 '\n'
# print("詠鵝\n鵝鵝鵝,\n曲項向天歌;\n白毛浮綠水,\n紅掌撥清波。") # 等同于如下寫法 print('''詠鵝 鵝鵝鵝, 曲項向天歌; 白毛浮綠水, 紅掌撥清波。''')- 字符串的轉義
????????字符串的字面值中,可以加反斜杠 \ 后加一個或多個字符串,代表一個單個的字符
\' 代表一個單引號 \" 代表一個雙引號 \n 代表一個換行符 \\ 代表一個反斜杠- 思考
- Python 中全部的轉義字符串
練習:
# 寫程序,打印如下文本內容 print("hello world") 答案 >>> print('print("hello world")') print("hello world") >>> >>> print("print(\"hello world\")") print("hello world")- 字符串的基本運算
+ 號運算符, 用于拼接字符串(生成新的字符串)
????????+ 號的兩側都必須是字符串
'今天是' + '7月13日' # 生成 '今天是7月13日' s1 = '123' s2 = "456" s3 = s1 + s2 print(s1) # 123 print(s2) # 456 print(s3) # 123456* 運算, 用于生成重復的字符串
? ? ? ? 字符串只能和整數相乘
print('我想你了' * 100)數字
Python 中的基本的數字類型
整數 int 浮點數(小數) float 布爾類型數 bool??????? -整數 int
???????????????????整數的字面值
# 十進制的寫法 100 0 -5 ? # 二進制的寫法 0b 開頭 后跟 0~1 0b1101 ? # 八進制的寫法 0o開頭 后跟 0~7 0o777 等于 0b111111111 等于 511 ? # 十六進制的寫法 0x 開頭 后跟 0~9, a-f, A-F 0xA1B2C3D4???????? -浮點數(小數) float
????????????????? 浮點數的字面值??
# 小數寫法 3.14 0.14 .14 3.0 3. 0.0 # 科學計數法 6.18E-1 # 等同于 0.618 2.9979E8 # 等同于 299790000.0??????? -布爾類型的數 bool
????????????????True??? 真(表示行,好,成立)??????????????? 值為1
????????????????False?? 假(表示不行,不好,不成立)??? 值為0
算術運算符
+ 加法 - 減法 * 乘法 / 除法 // 地板除法(向下取整) floordiv % 求余數 ** 冪運算(也叫乘方運算) x ** y 代表 x 的 y 次方?示例
>>> 1 + 2 * 3 / 4 2.5 >>> 14 / 3 4.666666666666667 >>> 14 // 3 4 >>> 14 % 3 2 >>> 3 ** 2 9比較運算符
比較運算符是二元運算符
- 運算符
比較運算符通常返回布爾類型的數, True, False
>>> 100 + 200 > 3 True >>> 1 + 3 >= 2 True >>> 1 + 3 >= 200 # 表達式 False >>> score = 83 # 這是賦值語句 >>> 60 <= score <= 100 True >>> score = 59 >>> 60 <= score <= 100 False表達式和語句
表達式和語句的概念
- 表達式
????????是由數字,字符串(文字), 運算符,函數調用等組成,通常用于計算并得到一個結果
?????????????????表達式是語文中的字或短語
- 語句
????????語句是計算機執行程序的最小單位
示例
a = 100 # 賦值語句 print(a) # 表達式語句- 函數調用是表達式
????????函數調用語法規則
函數名(傳入的參數)None 是表示空值的一個對象
- 數據類型轉換相關的函數
- 示例:
- python 中假值對象
布爾運算符(也叫邏輯運算符)
- 運算符
- and 與運算
????????兩者(兩個元素同時為真,結果才為真)
語法
x and y # x, y代表表達式示例
>>> 3 + 4 > 5 and 6 + 7 > 100真值表
x的值 y的值 x and y的值 True True True True False False False True False優先返回假值對象, 如果x 為假值,返回x, 否則返回y
- or? 或運算
兩者(兩個元素只要有一個為真,結果就為真)
x or y # x, y代表表達式真值表
x的值 y的值 x or y的值 True True True True False True False True True False False False優先返回真值對象, 如果x 為真值,返回x, 否則返回y
- not 非運算
????????not 運算符是一元運算符
語法
not 表達式示例
not True # False not False # True not 3.14 # False not '' # True not 1 + 2 # False- and 示例
if 語句
作用
????????讓程序根據條件選擇性的執行其中的某一個語句塊
語法
if 條件表達式1:語句塊1 elif 條件表達式2:語句塊2 elif 條件表達式3:語句塊3 ... elif 條件表達式n:語句塊n else:語句塊(其他)說明
??????? -elif 子句可以有0個,1個或多個,
?????? -else 子句可以有0個或1個且只能放在最后
?????? -它通過對表達式逐個求值直至找到一個真值(請參閱 布爾運算 了解真值與假值的定義)在子句體中選擇唯一匹配的一個;然后執行該子句體(而且 if 語句的其他部分不會被執行或求值)。 如果所有表達式均為假值,則如果 else 子句體如果存在就會被執行。
if 語句也是語句,他可以嵌套到其他的復合語句中
if xxxx:if yyyy > 0:print('.....')else:print("fjdsfdf") else:print("hello")del 語句
作用:
用于刪除變量,同時解除與對象的關聯,如果可能則釋放此變量綁定的對象
語法:?
del 變量名 del 變量名1, 變量名2, ...自動化內存管理和引用計數:
每個對象都會記錄有幾個變量引用自身,當引用的數量為0時則此對象被銷毀,此種自動化內存管理的方式叫做引用計數。
pass 語句
作用
????????用來填充語法空白
語法
pass示例
# 如果 成績在 0~100 什么都不做, 其他提示"您的輸入有誤" score = int(input('請輸入成績:')) if 0 <= score <= 100:pass else:print('您的輸入有誤!')條件表達式
語法
表達式x if 條件表達式C else 表達式y說明
????????執行順序
????????????????先判斷 條件表達式C 是真值還是假值,
????????????????如果 C是真值,則表達式x 執行并返回結果
????????????????如果 C是假值,則表達式y 執行并返回結果
表達式 x if C else y 首先是對條件 C 而非 x 求值。 如果 C 為真,x 將被求值并返回其值;否則將對 y 求值并返回其值。
示例
>>> score = 69 >>> "及格" if 60 <= score <= 100 else "不及格" '及格' >>> s = "及格" if 60 <= score <= 100 else "不及格" >>> print(s) 及格字符串
字符串的概述及基本運用
- 字面值
- 字符串轉義
- 字符串的運算
+ 用于拼接字符串
*? 用于生成重復的字符串
- 原始字符串(raw 字符串)
以字符r開頭的字符串, 其中的 \ 不算轉義字符串
????????字面值格式
r'字符串內容' r"字符串內容" r'''字符串內容''' r"""字符串內容"""- in / not in 運算符
作用
????????in 用于序列,字符串,字典中,用于判斷某個值是否存在于容器中,如果存在就返回True, 否則返回False
????????not in 的返回值與 in 相反
示例
>>> s = 'welcome to beijing!' >>> 'to' in s True >>> 'weimingze' in s False >>> 'beijing' not in s False >>> 'weimz' not in s True- 字符串的索引 index
語法
字符串[整數表達式]作用
????????用來獲取字符串其中的一個字符
說明
????????正向索引: 字符串的 正向索引是從0開始的,.... 最后一個索引為 len(s)-1
????????反向索引: 字符串的反向索引是從 -1 開始的,-1 代表最后一個,... -len(s) 代表第一個
示例
>>> s = 'ABCDE' >>> s[1] B >>> s[1+2] D >>> s[-1] E注: len(x) 函數可以求取一個字符串的長度
- 字符串的切片 slice
作用
????????從字符串序列中取出相應位置的元素,重新組成一個新的字符串
語法
字符串[(開始索引b):(結束索引e)(:(步長s))]注: () 括起來的內容代表可以省略
說明
??????? -開始索引b是切片切下的開始位置
??????? -結束索引e 是切片的終止位置(但不包含終止點)
??????? -步長是切片取出數據后向后移動的方向和偏移量
?????????????? - 沒有步長,相當于步長為1(默認為1)
?????????????? - 當步長為正數時,取正向切片
?????????????????????? - 開始索引默認為0, 結束索引是最后一個元素的下一個索引
?????????????? - 當步長為負數時,取反向切片
?????????????????????? - 開始索引默認為-1, 結束索引是第一個元素的前一個索引
示例
# 01234 >>> s = 'ABCDE' >>> s[1:] # 'BCDE' >>> s[-2:] # 'DE' >>> s[1:4] # 'BCD' >>> s[:] # 'ABCDE' >>> s[:2] # 'AB' >>> s[1:1] # '' >>> s[4:2] # '' >>> s[::] # 等同于 s[::1] 'ABCDE' >>> s[::2] # 'ACE' >>> s[2::2] # 'CE' >>> s[-1::-2] # 'ECA' >>> s[::-1] # 'EDCBA'符串的格式化表達式
- 作用
????????生成具有一定格式的字符串
- 語法規則
- 占位符和類型碼
- 示例1
- 示例2
- 占位符和類型碼之間的格式化語法
- 左對齊
+ 顯示正號
0 左側空白位置補零
寬度: 整個數據輸出的寬度
精度: 保留小數點以后多少位(默認小數點以后保留6位)
常用于 %d 和 %f 中
示例
>>> "--%d--" % 99 '--99--' >>> "--%5d--" % 99 '-- 99--' >>> "--%05d--" % 99 '--00099--' >>> "--%5d--" % 99 '-- 99--' >>> "--%+5d--" % 99 '-- +99--' >>> "--%-5d--" % 99 '--99 --' >>> "--%f--" % 3.1415926 '--3.141593--' >>> "--%.2f--" % 3.1415926 '--3.14--' >>> "--%7.2f--" % 3.1415926 '-- 3.14--'字符串的常用方法(method)
- 方法的調用語法
- 示例:
. 是"的"的意思
- 字符串的常用方法
代表其中的內容弄可以省略
詳見: https://docs.python.org/zh-cn/3/library/stdtypes.html#string-methods
- 示例:
while 語句
作用
????????根據一定的條件,重復的執行某個語句塊
語法
while 真值表達式:語句塊1 (*此部分可能會重復執行) else:語句塊2說明
??????? -else 子句可以省略
??????? -else 子句 當且僅當 真值表達式為假Flase的時候 會執行 else 里的語句塊2
??????? -如果 此 while 是因為 調用 break 語句而終止循環。則 else 子句里的語句不會執行
示例1
while 1 < 2:print("hello world")示例2
# 打印 5 行 "hello world" i = 0 while i < 5:print("hello world")i = i + 1 # 也可寫成 i += 1 else:print("while 語句已經結束!")語句嵌套
while 語句也是語句, 和其他的語句一樣,可以嵌套到其他的任何復合語句中。
while? 語句嵌套示意:
while 真值表達式:...while 真值表達式2:...else:......... else:...break 語句
作用
????????用于循環語句(while, for語句)中, 當break 執行是,她會終止包含他的當前循環。
語法
break說明?????
????????break 語句只能用在 while 語句或for語句的內部.
????????break 語句通常和 if 語句組合使用.
????????當break 語句執行后,此循環語句break 之后的所有語句都不會執行(else 子句里的語句也不執行)
????????break 語句只能終止包含他的當前循環,當有循環嵌套時,只能跳出離他最近的一個循環
示例
i = 1 while i <= 5:print('i=', i)if i == 2breaki += 1 else:print('循環結束: i=', i)死循環
????????死循環是指循環條件一直成立的循環
????????死循環通常使用 break 語句來終止循環
????????死循環的 else 子句中的語句永遠不會執行
寫法???????
while True:語句塊循環通常用戶循環次數無法確定的循環
for 語句
作用
????????用來遍歷可迭代對象的數據元素
遍歷是指經歷且只經歷一遍
可迭代對象是指能夠依次獲取數據元素的對象
可迭代對象
????????字符串
????????---- 以下后面才講----
????????列表 list
????????字典 dict
????????...
語法
for 變量列表 in 可迭代對象:語句塊1 else:語句塊2語法說明??
????????else 子句可以省略
????????else 子句的語句塊2 只有在 可迭代對象不再能提供數據的時候才會執行
????????因為 語句塊1 部分調用break 而終止循環式,else 子句部分不會執行
示例
s = 'ABCDE' for ch in s:print('ch=', ch) else:print("遍歷結束")?range 函數
作用
????????用來生成一個能夠得到一系列整數的可迭代對象(也叫整數序列生成器)
調用格式
range(stop) # stop 停止整數 range(start, stop) # start 開始整數 range(start, stop, step) # step 步長range 函數調用會生成從 start 開始,到 stop 結束(不包含stop) 的一系列整數,整數的間隔 step
start 默認值為0, step 默認值為1
示意
range(4) # 生成 0 1 2 3 range(3, 6) # 生成 3 4 5 range(1, 10, 2) # 生成 1 3 5 7 9 range(5, 0, -2) # 生成 5 3 1示例
>>> for x in range(4): ... print(x) ... 0 1 2 3 >>> for x in range(3, 6): ... print(x) ... 3 4 5 >>> for x in range(1, 10, 2): ... print(x) ... 1 3 5 7 9 >>> for x in range(5, 0, -2): ... print(x) ...continue 語句
作用
????????用于循環語句(while 語句和for語句)中, 不再執行本次循環內 continue 之后的語句,開始一次新的循環
語法
continue說明
????????在for 語句中, 執行continue 語句,for語句將會從可迭代對象向中獲取下一個元素綁定變量后再次進行循環
????????在while 中,執行continue 語句, 將會直接跳轉到while 語句的真值表達式處,重新判斷循環條件
示例1
for x in range(5):if x % 2 == 0:continueprint(x) # 0 1 2 3 4示例2
x = 0 while x < 5:print(x)x += 1值
None復合賦值分隔符
x += y # 等同于 x = x + y x -= y # 等同于 x = x - y x *= y # 等同于 x = x * y x /= y # 等同于 x = x / y x //= y # 等同于 x = x // y x %= y # 等同于 x = x % y ....容器
列表 list
????????列表是一種可以存儲任意個各種類型的序列容器
????????列表內的數據有先后順序關系
????????列表是可變的容器
序列指有序排列
- python 中默認有4種可變的容器
????????列表list
????????字典 dict
????????集合 set
????????字節數組 bytearray
- python 3 中的序列
????????字符串 str
????????列表 list
????????元組 tuple
- 創建列表的字面值
注: python 中的 (), [], {} 和 三引號字符串都要成對出現, 可以換行
- 創建列表的構造函數 list
- 列表的運算
????????列表list同字符串str都是序列, 他們的運算規則基本相同
+ 用于拼接列表
>>> [1, 2, 3] + [4, 5, 6] # [1, 2, 3, 4, 5, 6]+= 追加
語法 列表 += 可迭代對象
>>> L = [1, 2, 3] >>> L += [4, 5] # L = [1, 2, 3, 4, 5] >>> L = [1, 2, 3] >>> L += "ABC" # L = [1, 2, 3, 'A', 'B', 'C'] >>> L += range(2)* 用于生產重復的列表
>>> [1, 2] * 3 # [1, 2, 1, 2, 1, 2] >>> L = [5, 6] >>> L *= 3 # L = [5, 6, 5, 6, 5, 6]==? != 用于比較
列表[整數表達式] >>> [1, 2, 3] == [1, 2, 3] # True >>> [1, 2, 3] != [3, 2, 1] # Truein /not in 用于判斷一個數據元素是否在列表中
>>> "hello" in [1, "hello", 'world'] True >>> '紅樓夢' in ['三國演義', '西游記'] False索引
列表[整數表達式] L = [1, 2, 3, 4, 5, 6] print(L[0]) # 1 print(L[-1]) # 6切片
列表[(開始索引b):(終止索引e)(: (步長s))]????????() 里的內容代表可以省略
x = [1, 2, 3, 4, 5, 6, 7, 8] y1 = x[:4] # y1 = [1, 2, 3, 4] y2 = x[::2] # y2 = [1, 3, 5, 7] y3 = x[::-1] # y3 = [8, 7, 6, 5, 4, 3, 2, 1]列表是可變的容器(不同于字符串)
????????列表是可變的
????????字符串是不可變的
>>> L1 = L2 = [1, 2, 3] >>> L1 += [4, 5, 6] # L1 = [1, 2, 3, 4, 5, 6] >>> L2 [1, 2, 3, 4, 5, 6] # 不同于字符串 >>> s1 = s2 = "ABC" >>> s1 += 'DEF' # s1 = 'ABCDEF' >>> s2 'ABC'- 列表的數據操作(增、刪、改、查)
添加數據
????????方法
方法名(L代表列表) 說明 L.append(x) 向列表的末尾追加單個數據 L.insert(index, obj) 將某個數據obj 插入到 index這個索引位置的數據之前 L.extend(可迭代對象) 等同于: L += 可迭代對象示例
mylist1 = [1, 3, 4] # 目標是變成 [1, 2, 3, 4, 5] mylist1.append(5) # mylist1 = [1, 3, 4, 5] mylist1.insert(1, 2) # mylist1 = [1, 2, 3, 4, 5] mylist1.extend(range(6, 10)) # mylist1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]修改數據(改)
????????用索引賦值可以改變列表內的數據
列表[整數表達式] = 表達式示例
mylist2 = [1, 1.99, 3] # 把1.99 改為2 mylist2[1] = 2 # mylist2 = [1, 2, 3]刪除數據(刪)
方法
方法 說明 L.remove(x) 從列表L中刪除第一次出現在列表中的數據元素,如果x不存在則報錯 L.clear() 清空列表示例
L = [1, 2, 3, 4, 2, 2, 3, 4] L.remove(3) # L = [1, 2, 4, 2, 2, 3, 4] L.remove(3) # L = [1, 2, 4, 2, 2, 4] L.remove(3) # 報錯了 L.clear() # L = []- del 語句刪除指定位置的數據元素
語法
del 變量名 # 刪除變量,同時解除變量綁定的對象 del 列表[整數表達式]示例
L = ['張飛', '趙云', '魯班7號', '孫悟空'] del L[2] # L = ['張飛', '趙云', '孫悟空'] del L # 刪除L 變量查看(索引取值就是查看)
print(L[0]) # 取值- 列表的常用方法
示例:
s = [1, "二", 3] value = s.pop(1) # s= [1, 3]; value = '二' >>> s = [1, 2, 3, 5] >>> s.reverse() # 反轉 >>> s [5, 3, 2, 1] >>> s = [1, 2, 3, 4, 2, 2, 3, 4] >>> s.index(3) # 返回第一次出現的位置的索引 2 >>> s.index(3, 4) 6 >>> s.index(100) # 觸發異常,要用try 語句處理 Traceback (most recent call last):File "<stdin>", line 1, in <module> ValueError: 100 is not in list >>> s.count(3) # 在列表 s 中 找出所有值為3 的元素的個數,并返回 2 >>> s.count(2) 3 >>> L1 = [2, 4, 6, 8, 9, 1] >>> L1.reverse() >>> L1 [1, 9, 8, 6, 4, 2] >>> s.sort() # 排序,默認是升序排序 >>> s [1, 2, 2, 2, 3, 3, 4, 4] >>> s.sort(reverse=True) >>> s [4, 4, 3, 3, 2, 2, 2, 1]- ?列表解析(也叫列表推導式)
作用
????????用簡單的表達式方式來創建列表
語法規則
[ 表達式 for 自定義變量 in 可迭代對象 ] # 或 [ 表達式 for 自定義變量 in 可迭代對象 if 真值表達式 ]示例
生成一個列表, 里面有 100 個數是[1, 4, 9, 16, 25, ...] # 用 for 語句實現 L = [] for x in range(1, 101):L.append(x ** 2) print(L)# 用列表推導式 L2 = [ x ** 2 for x in range(1, 101)] print(L2)L3 = [ x ** 2 for x in range(1, 101) if x % 2 == 0] # 取出所有的偶數 # L3 = [4, 16, 36, ...]python3 中常用于序列的函數
運算 結果 len(s) s 的長度 min(s) s 的最小項 max(s) s 的最大項 # 課間休息: 11:11 回來 sum(s) 求 s內所有數字的和(不允許有其他數據) >>> L = [1, 5, 8] >>> len(L) 3 >>> min(L) 1 >>> max(L) 8 >>> sum(L) 14元組 tuple
元組是不可改變的列表, 同 列表list 一樣,元組可以存放任意類型的數據,但是,一旦創建將不可修改
- 創建元組的字面值
????????用小括號() 括起來,單個元素括起來后加逗號來區分單個元素還是元組
t = () # 空元組 t = (100,) # 含有一個數據元素的元組 t = 100, # 含有一個數據元素的元組 t = (1, 2, 3) # 含有三個數據元素的元組 t = 1, 2, 3 # 含有三個數據元素的元組????????type(x) 函數用來返回數據x的類型
- 創建元組的函數 tuple
- tuple 的運算
????????tuple 是序列的一種, 同列表的運算,但是不可以修改元組
>>> t = (1, 2, 3) + (4, 5, 6) >>> t += (7, 8, 9) >>> t = t * 2 >>> t *= 2 >>> 5 in t True >>> t[0] 1 >>> t[0:2] (1, 2)- 元組的方法
容器都是可迭代對象, 可以用for 語句來遍歷容器
for x in [1, 2, 3]:print(x)for y in (1, 2, 3):print(y)- 列表和元組的 +和 += 運算
字典 dict
- 什么是字典
??????? -字典是一種可變的容器,可以存儲任意類型的數據
??????? -字典的數據都是以鍵(key)-值(value)對的形式進行映射存儲.
??????? -字典的數據是無序的
??????? -字典的鍵不能重復,且之能用不可變類型作為字典的鍵
??????? -字典中的數據只能用"鍵"key 進行索引,不能用整數進行索引
- 創建字典的字面值:
字典的表示方式以? {} 括起來, 以英文的冒號 (:) 分隔鍵值對,各鍵值對之間用逗號(,)分隔
d = {} # 創建空字典 d = {'name': "weimingze", "age": 35} d = {'a': [1, 2, 3]} d = {'b': {"bb": 222}} d = {1:'壹', 2:'貳', 5:'伍'} d = {(1, 2, 3):'壹貳伍'}- 以下寫法會存在問題
- dict 的創建函數 dict
注: python 中有四種可變類型
????????列表 list
????????字典dict
????????集合 set
????????字節數組 bytearray
persons = [{'name': 'weimz', 'age': 35},{'name': '小張', 'age': 18}, ]- 字典的鍵索引
語法
字典[鍵key]用鍵索引可以查看字典中的數據
示例:
d = {'one': 1, 'two': 2} print(d['two'])- 添加和修改字典的元素
語法
字典[鍵key] = 表達式????????鍵不存在, 會創建鍵并綁定鍵對應的值
????????鍵存在, 會改變鍵對應的值
示例:
d = {} d['name'] = 'tarena' # 添加鍵值對 d = {'name': 'tarena'} d['age'] = 18 # d = {'name': 'tarena', 'age': 18} d['age'] = 19 # 改變 'age' 鍵對應的值 d = {'name': 'tarena', 'age': 19}- 刪除 字典的元素
語法‘
del 字典[鍵]示例:
>>> d = dict(a=1, b=2) # d = {'a': 1, 'b': 2} >>> del d['a'] >>> d {'b': 2}- in / not in? 運算符
?????????in 可以判斷一個鍵是否存在于字典中,如果存在返回 True, 否則返回 False
?????????not in 與 in? 相反
示例
>>> d = dict(a=1, b=2) # d = {'a': 1, 'b': 2} >>> 'a' in d True >>> 1 in d False >>> 'hello' not in d True- 字典是可迭代對象, 字典只能對所有的鍵進行迭代訪問
- 字典的常用方法
示例
>>> d = {'name': 'tarena', 'age': 19} >>> >>> d['age'] 19 >>> d['address'] Traceback (most recent call last):File "<stdin>", line 1, in <module> KeyError: 'address' >>> d.get('address', '未填寫住址') '未填寫住址' >>> d.get('age', 0) 19 >>> n = d.pop('name') >>> d { 'age': 19} >>> n 'tarena'列表、元組、字典小結
列表和元組是有序的,字典的存儲是無序的
列表、字典是可變的,元組是不可變的
字典的鍵索引速度快,列表的整數索引速度快
列表和元組是順序存儲的,字典是散列存儲的
d = {'a':1, 'b':2, .........} print(d['c']) # 速度快 L = [7, 5, 1, ........] print(L[10009]) # 速度快字典的 in / not in 運算符快于 列表的 in / not in 運算符
L = ['孫悟空', '趙云', '呂布', ...] if '王昭君' in L: # 速度慢pass D = {'孫悟空':'花果山', '趙云':'長山', '呂布':'石家莊', .....} if '王昭君' in D: # 速度快pass集合 set/ 固定集合 frozenset
????????集合是可變的容器,固定集合是不可變的集合
????????集合相當于只有鍵沒有值的字典
????????集合是無序的存儲結構
????????集合內的數據都是唯一的,不可變
- 創建集合的方式
????????空集合 set()
????????非空集合 用 {} 括起來,值用逗號分隔開
s = set() # 用函數空集合 s = {1, 2, 3, 4} # 創建非空集合的字面值 s = set(range(5)) # 調用 set(可迭代對象) 來創建集合 s = {0, 1, 2, 3, 4} s = set("ABC") # s = {'B', 'C', 'A'} s = set("ABCCCCCCC") # s = {'B', 'C', 'A'} s = set(['ABC']) # s = {'ABC'}- 創建固定集合frozensets的方式
集合和固定集合的運算
- in/ not in 運算符 與列表相同
- 其他運算
示例
s1 = {1, 2, 3} s2 = {2, 3, 4} s3 = s1 & s2 # s3 = {2, 3} # 交集 s4 = s1 | s2 # s4 = {1, 2, 3, 4 } 并集 s5 = s1 - s2 # s5 = {1} 補集 s6 = s1 ^ s2 # s6 = {1, 4} # 對稱補集 s7 = {1, 2} < {1, 2, 3} # s7 = True s8 = {1, 2} > {1, 2, 3} # s8 = False s9 = {4, 5, 6, 7} > {5, 6} # {4, 5, 6, 7} 是 {5, 6} 的超集- 集合set的方法
容器總結
- 可變和不可變
????????????????可變的容器
list dict set bytearray(字節數組)????????????????不可變得容器
tuple, frozenset, bytes(字節串)- 序和亂序
????????????????有序
list tuple bytes bytearray????????????????無序
dict set frozenset總結
以上是生活随笔為你收集整理的《《python基础》》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyCharm 安装详细图片(linux
- 下一篇: Python进阶