python中列表实现自加减元素_python初学者知识整合
python
第一章:概述
1. 概述
Python是一門跨平臺、開源、免費的解釋型高級動態編程語言。
① 編譯:筆譯,用理解原文本
② 解釋:口譯,逐字逐句解釋,不產生新文本
Python中的可迭代對象有:列表、元組、字典、字符串;常結合for循環使用
2. 規范
(1)縮進
1、類定義、函數定義、選擇結構、循環結構、with塊,行尾的冒號表縮進開始。
2、python靠代碼塊縮進體現代碼間的邏輯關系,縮進結束就表示一個代碼塊結束。
3、同一個級別的代碼塊的縮進量必須相同。
4、一般而言,以4個空格為基本縮進單位
(2)每個import語句只導入一個模塊,并且按標準庫、擴展庫、自定義庫的順序依次導入。
(3)最好在每個類、函數定義和一段完整的功能代碼之后增加一個空行,在運算符兩側各增加一個空格,逗號后面增加一個空格。
(4)盡量不要寫過長的語句。
(5)雖然Python運算符有明確的優先級,但對于復雜的表達式建議在適當的
位置使用括號使得各種運算的隸屬關系和順序更加明確、清晰。
(6)注釋
1、以符號#開始,表示本行#之后的內容為注釋。
2、包含在一對三引號'''...'''或"""..."""之間且不屬于任何語句的內容將被解釋器
認為是注釋。
(7)一行寫多條語句可用分號做分隔符
3 導入方法
1、import模塊名 [as 別名]
2、from模塊名 import 對象名[ as 別名]
3、from模塊名 import *
第二章:運算符、表達式與內置對象
2.1 Python常用內置對象
注意:python內置對象可直接使用,如數字、字符串、列表、sum()、map()等。
標準庫對象需要導入模塊才能使用,如正弦函數sin(x),隨機數產生函數random( )等。
擴展庫對象需要先正確安裝擴展庫,然后再導入使用。
2.1.1 常量與變量
1、在Python中,不需要事先聲明變量名及其類型,直接賦值即可創建各種類型的對象變量。這一點適用于Python任意類型的對象。(字母不是常量)
2、變量需要定義(不需要事先聲明變量名及其類型,直接賦值即可)
在定義變量名的時候,需要注意以下問題:
1、變量名 必須以字母或下劃線開頭,但以下劃線開頭的變量在Python中有特殊含義;
2、變量名中 不能有空格以及標點符號(括號、引號、逗號、斜線、反斜線、冒號、句問號等等);
3、能使用關鍵字作變量名,可以導入keyword模塊后使用print(keyword.kwlist)查看所有Python關鍵字;
4、變量名對英文字母的 大小寫敏感,例如student和Student是不同的變量。
5、不建議使用系統內置的模塊名、類型名或函數名以及已導入的模塊名及其成員名作變量名,這將會改變其類型和含義,可以通過dir(__builtins__)查看所有內置模塊、類型和函數;
2.1.2 數字
1、Python支持任意大的數字。
2、由于精度的問題,對于實數運算可能會有一定的誤差,應盡量避免在實數之間直接進行相等性測試,而應該測試兩個實數是否足夠接近。(eg:0.4-0.1=0.300004)
3、內置支持復數類型及其運算
4、計算機可以精確表示一個整數,但無法精確表示一個浮點數
2.1.3 字符串與字節串
1、在Python中,沒有字符常量和變量的概念,只有字符串類型的常量和變量,單個字符也是字符串。使用單引號、雙引號、三單引號、三雙引號作為定界符(delimiter)來表示字符串,并且不同的定界符之間可以互相嵌套
2、可以使用中文作為變量名。
3、支持使用加號運算符連接字符串,還提供格式化、查找、替換、排版等
4、對str類型的字符串調用其encode()方法進行編碼得到bytes字節串,對bytes字節串調用其decode()方法并指定正確的編碼格式則得到str字符串
2.1.4 列表、元組、字典、集合
2.2 Python運算符與表達式
1、在Python中,單個常量或變量可以看作最簡單的表達式,使用除賦值運算符之外的其他任意運算符和函數調用連接的式子也屬于表達式
2、運算符優先級遵循的規則為:算術運算符優先級最高,其次是位運算符、成員測試運算符、關系運算符、邏輯運算符等,算術運算符遵循“先乘除,后加減”的基本運算原則。
3、建議編寫復雜表達式時使用圓括號來明確說明其中的邏輯來提高代碼可讀性
2.2.1 算術運算符
(1)+運算符除了用于算術加法以外,還可以用于列表、元組、字符串的連
接,但不支持不同類型的對象之間相加或連接
(2)*運算符除了表示算術乘法,還可用于列表、元組、字符串與整數的乘
法,表示序列元素的重復,生成新的序列對象。
(3)運算符/和//在Python中分別表示算術除法和算術求整商(floor division)
(4)%運算符可以用于整數或實數的求余數運算,還可以用于字符串格式化
(5)**運算符表示冪乘:
備注:4.5//2=2.0;5//2=2(除整整運算外,都要加小數點)
2.2.2 關系運算符
注意:”Python關系運算符可以連用,操作數之間必須可比較大小
2.2.3 成員測試運算符in
成員測試運算符in用于成員測試,即測試一個對象是否為另一個對象的元素
2.2.4 集合運算符
2.2.5 邏輯運算符
1、邏輯運算符and、or、not常用來連接條件表達式構成更加復雜的條件表達式,
并且and和or具有惰性求值或邏輯短路的特點,當連接多個表達式時只計算必須
要計算的值。
2、另外要注意的是,運算符and和or并不一定會返回True或False,而是得到最后一
個被計算的表達式的值,但是運算符not一定會返回True或False
注意:邏輯運算符的結果是最后一次運行的表達式的值
3<5and5>4為true此外,非零、非空都當做true(但輸出是原值)
但5or5<4因為短路特性為5
2.2.6 補充說明
1、Python不支持++和--運算符
2、Python關鍵字只允許用來表達特定的語義,不允許通過任何方式改變它們的含義,也不能用來做變量名、函數名或類名等
2.4、 Python常用內置函數用法精要
1、 內置函數(BIF,built-in functions)是Python內置對象類型之一,不需要額外導入任何模塊即可直接使用,這些內置對象都封裝在內置模塊__builtins__之中,用C語言實現并且進行了大量優化,具有非常快的運行速度,推薦優先使用。
2、 使用內置函數dir()可以查看所有內置函數和內置對象:
>>> dir(__builtins__)
3、使用help(函數名)可以查看某個函數的用法。
>>> help(sum)
4.速度:內置函數>拓展庫>標準庫
Range函數講解
Range(5)已經產生1,2,3,4,5但是好像放在一個容器內,使用時才可取出遍歷,它返回的是range型可迭代對象,具有惰性求值的特征
2.4.1 類型轉換與類型判斷
1、內置函數bin()、oct()、hex()用來將整數轉換為二進制、八進制和十六進制形
式,這三個函數都要求參數必須為整數。
2、內置函數int()用來將其他形式的數字轉換為整數,參數可以為整數、實數、分數或合法的數字字符串。當參數為數字字符串時,還允許指定第二個參數base用來說明數字字符串的進制,base的取值應為0或2-36之間的整數,其中0表示按數字字符串隱含的進制進行轉換。
3、 內置函數float()用來將其他類型數據轉換為實數,complex()可以用來生成復數
3、ord()用來返回單個字符的Unicode碼;chr()則用來返回Unicode編碼對應的字符;str()則直接將其任意類型參數轉換為字符串。
4、 list()、tuple()、dict()、set()用來把其他類型的數據轉換成為列表、元組、字典、可變集合和不可變集合,或者創建空列表、空元組、空字典和空集合
2.4.2 最值與求和
1、max()、min()、sum()這三個內置函數分別用于計算列表、元組或其他包含有限個元素的可迭代對象中所有元素最大值、最小值以及所有元素之和。
2函數max()和min()支持key參數,用來指定比較大小的依據或規則,可以是函數或lambda表達式
2.4.3 基本輸入輸出
1、input()和print()是Python的基本輸入輸出函數,前者用來接收用戶的鍵盤輸入,后者用來把數據以指定的格式輸出到標準控制臺或指定的文件對象。不論用戶輸入什么內容,input()一律返回字符串對待,必要的時候可以使用內置函數int()、float()或eval()對用戶輸入的內容進行類型轉換
2、內置函數print()用于輸出信息到標準控制臺或指定文件,語法格式為:print(value1, value2, ..., sep=' ', end='n', file=sys.stdout, flush=False)
2.4.4 排序與逆序
1、sorted()對列表、元組、字典、集合或其他可迭代對象進行排序并返回新列表,reversed()對可迭代對象(生成器對象和具有惰性求值特性的zip、map、filter、enumerate等類似對象除外)進行翻轉(首尾交換)并返回可迭代的reversed對象
2.4.5 枚舉與迭代
1、enumerate()函數用來枚舉可迭代對象中的元素,返回可迭代的enumerate對象,其中每個元素都是包含索引和值的元組
2.4.6 map()、reduce()、filter()
1、內置函數map()把一個函數func依次映射到序列或迭代器對象的每個元素上,并返回一個可迭代的map對象作為結果,map對象中每個元素是原序列中元素經過函數func處理后的結果
2、標準庫functools中的函數reduce()可以將一個接收2個參數的函數以迭代累積的方式從左到右依次作用到一個序列或迭代器對象的所有元素上,并且允許指定。
3內置函數filter()將一個單參數函數作用到一個序列上,返回該序列中使得該函數返回值為True的那些元素組成的filter對象,如果指定函數為None,則返回序列中等價于True的元素。
2.4.7 range()
range()有range(stop)、range(start, stop)和range(start, stop, step)三種用法。該函
數返回具有惰性求值特點的range對象,其中包含左閉右開區間[start,end)內以step為步長的整數。參數start默認為0,step默認為1
2.4.8 zip()
zip()函數用來把多個可迭代對象中的元素壓縮到一起,返回一個可迭代的
zip對象,其中每個元素都是包含原來的多個可迭代對象對應位置上元素的
元組,如同拉拉鏈一樣
第三章:python序列結構
3.1 列表
1、列表(list)是包含若干元素的有序連續內存空間。當列表增加或刪除元素時,列表對象自動進行內存的擴展或收縮,從而保證相鄰元素之間沒有縫隙。
2、在非尾部位置插入和刪除元素時會改變該位置后面的元素在列表中的索引,這對于某些操作可能會導致意外的錯誤結果。除非確實有必要,否則應盡量從列表尾部進行元素的追加與刪除操作。
3、在形式上,列表的所有元素放在一對方括號[]中,相鄰元素之間使用逗號分隔。
4、在Python中,同一個列表中元素的數據類型可以各不相同,可以同時包含整數、實數、字符串等基本類型的元素,也可以包含列表、元組、字典、集合、函數以及其他任意對象。
3.1.1 列表創建與刪除
1、使用“=”直接將一個列表賦值給變量即可創建列表對象 alist=[]
2、可以使用list()函數把元組、range對象、字符串、字典、集合或其他可迭代對象轉換為列表
3、當一個列表不再使用時,可以使用del命令將其刪除
3.1.2 列表元素訪問
創建列表之后,可以使用整數作為下標來訪問其中的元素,其中0表示第1個元素,-1表最后一個元素,支持雙向索引。
3.1.3 列表常用方法
3.1.4 列表對象支持的運算符
①加號運算符:x=x+[4]
②乘號運算符:x=x*2表示列表的重復
③成員測試運算符in可用于測試列表中是否包含某個元素,查詢時間隨著列表長度的增加而線性增加(值in列表)
3.1.5 內置函數對列表的操作
3.1.6 列表推導式語法與應用案例(pass)
3.1.7 切片操作的強大功能
在形式上,切片使用2個冒號分隔的3個數字來完成。[start:end:step]
(1) 使用切片獲取列表部分元素
與使用索引作為下標訪問
列表元素的方法不同,切片操作不會因為下標越界而拋出異常,而是簡單地在列表尾部截斷或者返回一個空列表,代碼具有更強的健壯性。
(2) 使用切片為列表增加元素
(3) 使用切片替換和修改列表中的元素
(4)使用切片刪除列表中的元素
最后,x=[1,2,3];y=x;x,append(5)#無論x,y都變成[1,2,3,5]因為他們都指向[1,2,3]但x=[1,2,3];y=[1,2,3];x.append(4)則不會對y產生影響;以及x=[1,2,3],y=x,x=[4,5,6]y依然為[1,2,3]
3.2 元組:輕量級列表
從形式上,元組的所有元素放在一對圓括號中,元素之間使用逗號分隔,如果元組中只有一個元素則必須在最后增加一個逗號
3.2.1 元組創建與元素訪問
3.2.2 元組與列表的異同點
①列表和元組都屬于有序序列,都支持使用雙向索引訪問其中的元素,以及使用count()方法統計指定元素的出現次數和index()方法獲取指定元素的索引,len()、map()、filter()等大量內置函數和+、in等運算符也都可以作用于列表和元組。
②元組屬于不可變(immutable)序列,不可以直接修改元組中元素的值,也無法為元組增加或刪除元素。
③元組沒有提供append()、extend()和insert()等方法,無法向元組中添加元素;同樣,元組也沒有remove()和pop()方法,也不支持對元組元素進行del操作,不能從元組中刪除元素。
④元組也支持切片操作,但是只能通過切片來訪問元組中的元素,而不允許使用切片來修改元組中元素的值,也不支持使用切片操作來為元組增加或刪除元素。
⑤Python的內部實現對元組做了大量優化,訪問速度比列表更快。元組在內部實現上不允許修改其元素值,從而使得代碼更加安全
3.2.3 生成器推導式(pass)
3.3 字典:反映對應關系的映射類型
①字典(dictionary)是包含若干“鍵:值”元素的無序可變序列,字典中的每個元素包含用冒號分隔開的“鍵”和“值”兩部分,表示一種映射或對應關系,也稱關聯數組。定義字典時,每個元素的“鍵”和“值”之間用冒號分隔,不同元素之間用逗號分隔,所有的元素放在一對大括號“{}”中。
②字典中元素的“鍵”可以是Python中任意不可變數據,例如整數、實數、復數、字符串、元組等類型等可哈希數據。另外,字典中的“鍵”不允許重復,而“值”是可以重復的。
3.3.1 字典創建與刪除
3.3.2 字典元素的訪問
字典中的每個元素表示一種映射關系或對應關系,根據提供的“鍵”作為下標就可以訪問對應的“值”,如果字典中不存在這個“鍵”會拋出異常。
假設counter是一個字典,用來進行詞頻統計,鍵為詞,值為該詞出現的次數。
如果變量a用來表示我們遍歷到的每個單詞,那么統計過程中可能會出現兩種情況:
(1)第一種情況就是這個單詞以前被統計過,也就是說在字典中有這個鍵,那么我們只需要用counter[a] = counter[a]+1就可以把他出現的詞頻加一了;
(2)但是,如果這個詞以前從來沒有出現過,那么通過counter[a]來訪問就會出錯,那么怎么辦呢?
我們可以使用get方法,get()方法當中有兩個參數,第一個參數表示鍵,第二個參數就是如果這個鍵沒有出現的話,該返回什么值。get(a,0)有兩層意思,如果a出現過,則取出a的值,如果a沒出現過,則值為第二個參數0。
所以我們可以用counter[a] = counter.get(a,0)+1來進行詞頻統計
3.3.2 字典元素的訪問
3.3.3 元素添加、修改與刪除
當以指定“鍵”為下標為字典元素賦值時,有兩種含義:
(1)若該“鍵”存在,則表示修改該“鍵”對應的值;
(2)若不存在,則表示添加一個新的“鍵:值”對,也就是添加一個新元素
(3)如果需要刪除字典中指定的元素,可以使用del命令 del aDict['age']
3.4 集合
①集合(set)屬于Python無序可變序列,使用一對大括號作為定界符,元素之間使用逗號分隔,同一個集合內的每個元素都是唯一的,元素之間不允許重復。
②集合中只能包含數字、字符串、元組等不可變類型(或者說可哈希)的數據,而不能包含列表、字典、集合等可變類型的
3.4.1 集合對象的創建與刪除
3.4.2 集合操作與運算
(1)集合元素增加與刪除
①add()方法可以增加新元素,如果該元素已存在則忽略該操作。s.add(3)
②pop()方法用于隨機刪除并返回集合中的一個元素,如果集合為空則拋出異常;s.pop()
③remove()方法用于刪除集合中的元素,如果指定元素不存在則拋出異常;s.remove(5)
④discard()用于從集合中刪除一個特定元素,如果元素不在集合中則忽略該操作;s.discard(5)
(2)集合運算
3.5 序列解包
可以使用序列解包功能對多個變量同時進行賦值
第4章 程序控制結構
4.1 條件表達式
在選擇和循環結構中,條件表達式的值只要不是False、0(或0.0、0j等)、空值None、空列表、空元組、空集合、空字典、空字符串、空range對象或其他空迭代對象,Python解釋器均認為與True等價
(1)關系運算符
Python中的關系運算符可以連續使用,這樣不僅可以減少代碼量,也比較符合人類的思維方式。(print(1<2<3) 等價于1<2 and 2<3)在Python語法中,條件表達式中不允許使用賦值運算符“=”
(2)邏輯運算符
邏輯運算符and和or具有短路求值或惰性求值的特點,可能不會對所有表達式
進行求值,而是只計算必須計算的表達式的值
4.2 選擇結構
①單分支選擇結構
②雙分支選擇結構
③多分支選擇結構
④嵌套的分支結構
4.2.1選擇結構的嵌套
4.3 循環結構
4.3.1 for循環與while循環
①.3.2 break與continue語句
② 一旦break語句被執行,將使得break語句所屬層次的循環提前結束;
② continue語句的作用是提前結束本次循環,忽略continue之后的所有語句,提前進入下一次循環
總結
以上是生活随笔為你收集整理的python中列表实现自加减元素_python初学者知识整合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运动会成绩管理系统python_Pyth
- 下一篇: 003很好的网络博客(TCP/IP)-很