日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python第三周笔记_Python第三周 学习笔记(1)

發布時間:2025/3/19 python 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python第三周笔记_Python第三周 学习笔记(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

key-value鍵值對的數據的集合

可變的、無序的、key不重復

初始化:

d = dict()

d = {}

d = dict(**kwargs) 如:d = dict(a=1,b=2)

dict(iterable, **kwarg)

使用可迭代對象和name=value對構造字典,不過可迭代對象的元素必須是一個二元結構

dict(mapping, **kwarg)

dict.fromkeys(iterable, value)

字典元素的訪問

d[key]

返回key對應的值value

key不存在拋出KeyError異常

get(key[, default])

返回key對應的值value

key不存在返回缺省值,如果沒有設置缺省值就返回None

setdefault(key[, default])

返回key對應的值value

key不存在,添加kv對,value為default,并返回default,如果default沒有設置,缺省為None

字典增加和修改

d[key] = value

將key對應的值修改為value

key不存在添加新的kv對

update([other]) -> None

使用另一個字典的kv對更新本字典

key不存在,就添加

key存在,覆蓋已經存在的key對應的值

就地修改

d.update(red=1)

d.update(((‘red‘,2),))

d.update({‘red‘:3})

字典刪除

pop(key[, default])

key存在,移除它,并返回它的value

key不存在,返回給定的default

default未設置,key不存在則拋出KeyError異常

popitem()

移除并返回一個任意的鍵值對

字典為empty,拋出KeyError異常

clear()

清空字典

del語句

本質上減少了一個對象的引用,del 實際上刪除的是名稱,而不是對象

字典遍歷:

遍歷key:

for k in d:

print(k)

for k in d.keys():

print(k)

遍歷values:

for k in d:

print(d[k])

for k in d:

print(d.get(k))

for v in d.values():

print(v)

*遍歷item,即kv對:

for item in d.items():

print(item)

for item in d.items():

print(item[0], item[1])

for k,v in d.items():

print(k, v)

for k, _ in d.items():

print(k)

for _ ,v in d.items():

print(v)

總結

Python3中,keys、values、items方法返回一個類似一個生成器的可迭代對象,不會把函數的返回結果復制到內存中

Dictionary view對象

字典的entry的動態的視圖,字典變化,視圖將反映出這些變化

字典遍歷和移除

遍歷字典時,不允許增刪元素

可先記錄key值再遍歷刪除

d = dict(a=1, b=2, c=‘abc‘)

keys = []

for k,v in d.items():

if isinstance(v, str):

keys.append(k)

for k in keys:

d.pop(k)

print(d)

defaultdict

collections.defaultdict([default_factory[, ...]])

第一個參數是default_factory,缺省是None,它提供一個初始化函數。當key不存在的時候,會調用這個工廠函數來生成key對應的value

ordereddict

collections.OrderedDict([items])

key并不是按照加入的順序排列,可以使用OrderedDict記錄順序

標準庫datetime

datetime模塊

datetime類

today()

返回本地時區當前時間的datetime對象

now(tz=None)

返回當前時間的datetime對象,時間到微秒,如果tz為None,返回和today()一樣

fromtimestamp(timestamp, tz=None) 從一個時間戳返回一個datetime對象

日期格式化

類方法 strptime(date_string, format) ,返回datetime對象

對象方法 strftime(format) ,返回字符串

字符串format函數格式化

import datetime

dt = datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")

print(dt.strftime("%Y-%m-%d %H:%M:%S"))

print("{0:%Y}/{0:%m}/{0:%d} {0:%H}::{0:%M}::{0:%S}".format(dt))

timedelta對象

與datetime對象做加減運算

datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0,minutes=0, hours=0, weeks=0)

total_seconds() 返回時間差的總秒數

標準庫time

time.sleep(secs) 將調用線程掛起指定的秒數

列表解析式

語法

[返回值 for 元素 in 可迭代對象 if 條件]

使用中括號[],內部是for循環,if條件語句可選

返回一個新的列表

列表解析式是一種語法糖

編譯器會優化,不會因為簡寫而影響效率,反而因優化提高了效率

減少程序員工作量,減少出錯

簡化了代碼,但可讀性增強

列表解析進階

[expr for item in iterable if cond1 if cond2]

等價于

ret = []

for item in iterable:

if cond1:

if cond2:

ret.append(expr)

[expr for i in iterable1 for j in iterable2 ]

等價于

ret = []

for i in iterable1:

for j in iterable2:

ret.append(expr)

生成器表達式

(返回值 for 元素 in 可迭代對象 if 條件)

生成器表達式是按需計算(或稱惰性求值、延遲計算),需要的時候才計算值

列表解析式是立即返回值

生成器是可迭代對象、迭代器

使用next(itetator)迭代

生成器迭代與列表迭代對比

生成器

延遲計算

返回迭代器,可以迭代

從前到后走完一遍后,不能回頭

列表

立即計算

返回的不是迭代器,返回可迭代對象列表

從前到后走完一遍后,可以重新回頭迭代

計算方式

生成器表達式延遲計算,列表解析式立即計算

內存占用

單從返回值本身來說,生成器表達式省內存,列表解析式返回新的列表

生成器沒有數據,內存占用極少,但是使用的時候,雖然一個個返回數據,但是合起來占用的內存也差不多

列表解析式構造新的列表需要占用內存

計算速度

單看計算時間看,生成器表達式耗時非常短,列表解析式耗時長

但是生成器本身并沒有返回任何值,只返回了一個生成器對象

列表解析式構造并返回了一個新的列表

集合解析式

{返回值 for 元素 in 可迭代對象 if 條件}

立即返回一個集合

字典解析式

{返回值 for 元素 in 可迭代對象 if 條件}

使用key:value形式

立即返回一個字典

內建函數

標識 id

返回對象的唯一標識,CPython返回內存地址

哈希 hash()

返回一個對象的哈希值

類型 type()

返回對象的類型

類型轉換

float() int() bin() hex() oct() bool() list() tuple() dict() set() complex() bytes() bytearray()

輸入 input([prompt])

接收用戶輸入,返回一個字符串

打印 print(*objects, sep=‘ ‘, end=‘\n‘, file=sys.stdout, flush=False)

打印輸出,默認使用空格分割、換行結尾,輸出到控制臺

對象長度 len(s)

返回一個集合類型的元素個數

isinstance(obj, class_or_tuple)

判斷對象obj是否屬于某種類型或者元組中列出的某個類型

isinstance(True, int)

issubclass(cls, class_or_tuple)

判斷類型cls是否是某種類型的子類或元組中列出的某個類型的子類

issubclass(bool, int)

絕對值abs(x)

x為數值

最大值max() 最小值min()

返回可迭代對象中最大或最小值

返回多個參數中最大或最小值

round(x)

四舍六入五取偶,round(-0.5)

pow(x , y)

等價于 x**y

range(stop)

從0開始到stop-1的可迭代對象;range(start, stop[, step])從start開始到stop-1結束步長為step的可迭代對象

divmod(x, y)

等價于 tuple (x//y, x%y)

sum(iterable[, start])

對可迭代對象的所有數值元素求和

sum(range(1,100,2))

chr(i)

給一個一定范圍的整數返回對應的字符

ord(c)

返回字符對應的整數

sorted(iterable[, key][, reverse]) 排序

返回一個新的列表,默認升序

reversed()

反轉

枚舉 enumerate(seq, start=0)

迭代一個序列,返回索引數字和元素構成的二元組

*start表示索引開始的數字,默認是0

迭代器和取元素 iter(iterable)、next(iterator[, default])

iter將一個可迭代對象封裝成一個迭代器

next對一個迭代器取下一個元素。如果全部元素都取過了,再次next會拋StopIteration異常

拉鏈函數zip(*iterables)

像拉鏈一樣,把多個可迭代對象合并在一起,返回一個迭代器

將每次從不同對象中取到的元素合并成一個元組

木桶原理,取最小迭代次數迭代

可迭代對象

能夠通過迭代一次次返回不同的元素的對象。

所謂相同,不是指值是否相同,而是元素在容器中是否是同一個,例如列表中值可以重復的,[‘a‘,‘a‘],雖然這個列表有2個元素,值一樣,但是兩個‘a‘是不同的元素

可以迭代,但是未必有序,未必可索引

可迭代對象有:list、tuple、string、bytes、bytearray、range、set、dict、生成器等

可以使用成員操作符in、not in,in本質上就是在遍歷對象

迭代器

特殊的對象,一定是可迭代對象,具備可迭代對象的特征

通過iter方法把一個可迭代對象封裝成迭代器

通過next方法,迭代 迭代器對象

生成器對象,就是迭代器對象

原文地址:http://blog.51cto.com/11281400/2095710

總結

以上是生活随笔為你收集整理的python第三周笔记_Python第三周 学习笔记(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。