Python基本概念和基本操作
阿新 • • 發佈:2018-12-14
文章目錄
資料結構
變長,可接收任意物件
tuple | (value) | 有序 | 可重複 | value內容個數均不可變 | |
---|---|---|---|---|---|
list | [value] | 有序 | 可重複 | value內容個數均可變 | 1.查詢和插入的時間隨著元素的增加而增加;2.佔用空間小,浪費記憶體很少 |
dict(map) | {key,value} | 無序 | key值可重複 | key必須是不可變物件,value可變 | 1.查詢和插入的速度極快,不會隨著key的增加而變慢;2.需要佔用大量的記憶體,記憶體浪費多 |
set | {key} | 無序 | key值不重複 | key必須實不可變物件 | 1,2同dict;3.要建立一個set,需要提供一個list作為輸入集合 |
注意:
-
t = (1):等效 t=1
t=(,1):表示tuple只有一個元素
-
可變物件: list,dict,set
不可變物件:tuple,int,float,bytes,string
函式
函式的引數
引數的定義順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數(命名關鍵字引數中的預設引數位置任意)和關鍵字引數
位置引數 | person(name) | person(‘xiao’) | 一個蘿蔔一個坑 |
---|---|---|---|
預設引數 | person(name,age=10) | person(‘xiao’) | 1.預設引數必須設定預設值,所以該引數可省去;2.預設引數必須在最後 |
可變引數 | person(*inf) | inf=[‘xiao’,10]; person(*inf) == person([‘xiao’,10]) == person(‘xiao’,10) | 1.可變引數被接收為一個tuple;2.可以傳入>=0個引數;3.簡化了引數傳遞寫法 |
關鍵字引數 | person(name, age, **kw) | person(‘xiao’,10, city=‘Beijing’) | 1.關鍵字引數被接收為一個dict;2.可以傳入>=0個引數;3.實現了人為可變個數地指定引數名和引數值 |
命名關鍵字引數 | person(name, age, *, city, job,sex=‘male’) | person(‘Jack’, 24, city=‘Beijing’, job) | 1.關鍵字引數被接收為一個dict;2.命名關鍵字引數必須傳入引數名,但可以沒有值(即可變引數後面的變數都會限定為命名關鍵字引數,如果沒有設定預設值,則使用時必須顯示寫出引數名);3.限制關鍵字引數的名字;4.如果函式定義中已經有了一個可變引數,後面跟著的命名關鍵字引數就不再需要一個特殊分隔符*;4.命名關鍵字引數可以有預設值,從而簡化呼叫 |
for迴圈
-
迴圈物件:可迭代變數Iterable。
-
集合資料型別:list,tuple,dict,set,str
-
generator:生成器和帶yield的generator function
-
-
例子:
#dict操作 d = {'a': 1, 'b': 2, 'c': 3} for key in d: print(key) #結果:a c b。(不一定按順序)預設迭代key for value in d.values(): print(value) #結果:1 3 2。指定迭代value for k, v in d.items(): print(k, v) #結果:a 1 c 3 b 2。指定迭代key和value #list操作 for i, value in enumerate(['A', 'B', 'C']): print(i, value) #把一個list變成索引-元素對 for x, y, z in [(1, 1, 1), (2, 4, 1), (3, 9, 1)]: print(x, y ,z)
Python中需要注意的問題
- Python標準的直譯器沒有針對尾遞迴做優化,任何遞迴函式都存在棧溢位的問題。