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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python核心编程:杂记2

發(fā)布時(shí)間:2025/3/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python核心编程:杂记2 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

1. Python對(duì)象

? ? 所有的Python對(duì)象都擁有三個(gè)特性:身份,類(lèi)型和值.

身份: 每一個(gè)對(duì)象都有一個(gè)唯一的身份標(biāo)識(shí)自己,任何對(duì)象的身份可以使用內(nèi)建函數(shù)id()來(lái)得到.這個(gè)值可以被認(rèn)為是該對(duì)象的內(nèi)存地址.

類(lèi)型: 對(duì)象的類(lèi)型決定了該對(duì)象可以保存什么類(lèi)型的值,可以進(jìn)行什么樣的操作,以及遵循什么樣的規(guī)則.我們可以使用type()查看Python對(duì)象的類(lèi)型.

值: 對(duì)象表示的數(shù)據(jù)項(xiàng).

1. type在函數(shù)中起判斷作用

? ? 我們定義一個(gè)函數(shù),要求傳遞的參數(shù)必須是元組(因?yàn)樵M不可更改),則我們可以這樣判斷(可以引申到判斷參數(shù)為整數(shù),浮點(diǎn)數(shù),字典等等):

>>> def func(aTuple):if type(aTuple) != tuple:print 'not tuple'else:print 'tuple'>>> func([1, 2, 3]) not tuple >>> func((1, 2, 3)) tuple 2. is/is not, isinstance操作符

A is B: A和B是同一個(gè)對(duì)象

A is not B: A和B不是同一個(gè)對(duì)象

isinstance(A, (int, long, float, complex)): A的類(lèi)型是否為(int, long, float, complex),也適用于類(lèi)實(shí)例的判斷

3. 內(nèi)建類(lèi)型,引用類(lèi)型的區(qū)別

內(nèi)建類(lèi)型: 整型,字符串,元組

引用類(lèi)型:列表,字典,類(lèi)對(duì)象

? ? 對(duì)內(nèi)建類(lèi)型的賦值,實(shí)際上是銷(xiāo)毀原對(duì)象,新建一個(gè)對(duì)象:

>>> ss = 'hello world' >>> id(ss) 46651264L >>> ss = 'what' >>> id(ss) 34271280L ? ? 而引用類(lèi)型則保持不變: >>> arr = [1, 2, 3] >>> id(arr) 45887240L >>> arr.append(4) >>> id(arr) 45887240L 4. 標(biāo)準(zhǔn)類(lèi)型的分類(lèi)

以存儲(chǔ)模型為標(biāo)準(zhǔn)的類(lèi)型分類(lèi):

標(biāo)量/原子類(lèi)型(保持單個(gè)字面對(duì)象的類(lèi)型): 數(shù)值(所有的數(shù)值類(lèi)型),字符串

容器類(lèi)型(容納多個(gè)相同/不同對(duì)象的類(lèi)型): 列表,元組,字典

以更新模型為標(biāo)準(zhǔn)的類(lèi)型分類(lèi):

可變類(lèi)型: 列表,字典

不可變類(lèi)型: 數(shù)字,字符串,元組

以訪問(wèn)模型為標(biāo)準(zhǔn)的類(lèi)型分類(lèi):

直接訪問(wèn): 數(shù)字

順序訪問(wèn): 字符串,列表,元組

映射訪問(wèn): 字典

2. 序列:字符串,列表和元組

1. 通用函數(shù)

額外知識(shí):淺拷貝和深拷貝

? ? 淺拷貝只是拷貝對(duì)象的索引,而不是重新建立了一個(gè)對(duì)象。如果完全拷貝一個(gè)對(duì)象,則需要深拷貝:

In [22]: arr Out[22]: [1, 2, 3, [4, 5]]In [23]: Tuple1 = tuple(arr)In [24]: import copyIn [25]: Tuple2 = copy.deepcopy(tuple(arr))In [26]: [id(x) for x in arr] Out[26]: [42791256, 42791232, 42791208, 140595426198232]In [27]: [id(x) for x in Tuple1] Out[27]: [42791256, 42791232, 42791208, 140595426198232]In [28]: [id(x) for x in Tuple2] Out[28]: [42791256, 42791232, 42791208, 140595427957864] ? ? 這里arr和Tuple1的元素id全部一樣(由于整形1,2,3是不可改變,所以重新賦值會(huì)新建一個(gè)對(duì)象),而Tuple2的[4, 5]的id不一樣,說(shuō)明進(jìn)行了深拷貝。

list(iter): 把可迭代對(duì)象轉(zhuǎn)換為列表。

str(obj): 把obj對(duì)象轉(zhuǎn)換成字符串

tuple(iter): 把一個(gè)可迭代對(duì)象轉(zhuǎn)換成一個(gè)元組對(duì)象

enumerate(iter): 接受一個(gè)可迭代對(duì)象作為參數(shù),返回一個(gè)enumerate對(duì)象(同時(shí)也是一個(gè)迭代器),該對(duì)象生成由iter每個(gè)元素的index值和item值組成的元組。

len(seq): 返回seq的長(zhǎng)度

max/min(iter, key = None):返回最大值,指定key則必須是一個(gè)可以傳給sort()方法的,用于比較的回調(diào)函數(shù)。

reversed(seq): 接受一個(gè)序列作為參數(shù),返回一個(gè)以逆序訪問(wèn)的迭代器。

sorted(iter, func = None, key = None, reverse = False): 接受一個(gè)可迭代對(duì)象作為參數(shù),返回一個(gè)有序的列表。

sum(seq, init = 0): 返回seq和可選參數(shù)init的總和,其效果等同于reduce(operator.add, seq, init)

zip([it0, it1, it2]):舉例說(shuō)明

In [29]: iter1 = (1, 2, 3)In [30]: iter2 = [11, 12, 13]In [31]: iter3 = [21, 22, 23]In [32]: zip(iter1, iter2, iter3) Out[32]: [(1, 11, 21), (2, 12, 22), (3, 13, 23)]

3. 映射

1. 哈希表

? ? 哈希表是一種數(shù)據(jù)結(jié)構(gòu),哈希表中存儲(chǔ)的每一條數(shù)據(jù),叫做一個(gè)值,是根據(jù)與它相關(guān)的一個(gè)被稱(chēng)作鍵的數(shù)據(jù)項(xiàng)進(jìn)行存儲(chǔ)的。鍵和值合在一起被稱(chēng)為“鍵-值”對(duì)。哈希表的算法是活取鍵,對(duì)鍵執(zhí)行一個(gè)叫做哈希函數(shù)的操作,并根據(jù)計(jì)算的結(jié)果,選擇在數(shù)據(jù)結(jié)構(gòu)的某個(gè)地址中來(lái)存儲(chǔ)你的值。任何一個(gè)值存儲(chǔ)的地址皆取決于它的鍵。正因?yàn)檫@種隨意性,哈希表中的值是沒(méi)有順序的。你擁有的是一個(gè)無(wú)序的數(shù)據(jù)集。

? ? 你所能獲得的有序集合只能是字典中的鍵的集合或者值的集合。方法Keys()或values()返回一個(gè)列表,該列表是可排序的。你還可以用item()方法得到包含鍵,值對(duì)的元組的列表來(lái)排序。由于字典本身是哈希的,所以是無(wú)序的。

? ? 哈希表一般有很好的性能,因?yàn)橛面I查詢(xún)相當(dāng)快。

2. 字典的鍵必須是可哈希的

? ? 因?yàn)槲覀冃枰ㄟ^(guò)鍵來(lái)查找數(shù)據(jù),所以鍵必須保持不變,即鍵必須是可哈希的(通過(guò)hash判斷):

In [45]: dst = {}In [46]: dst[[1, 2]] = 3 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-46-70dfcbeb49dc> in <module>() ----> 1 dst[[1, 2]] = 3TypeError: unhashable type: 'list'In [47]: hash([1, 2]) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-47-0e7c08465b16> in <module>() ----> 1 hash([1, 2])TypeError: unhashable type: 'list'

3. 映射相關(guān)函數(shù)

dict(): 工廠函數(shù),用來(lái)創(chuàng)建字典,參數(shù)為可迭代對(duì)象。

len(): 返回字典的長(zhǎng)度

hash(): 判斷對(duì)象是否可哈希,返回其哈希值。

in/ not in: 判斷鍵是否在字典中

映射類(lèi)型的內(nèi)建方法:

keys(), values(), items(): 返回字典的鍵,值,鍵-值對(duì)

clear(): 刪除字典中所有元素

copy(): 返回字典的一個(gè)副本(淺復(fù)制)

fromkeys(seq, val = None): 創(chuàng)建并返回一個(gè)新字典,以seq中的元素做該字典的鍵,val做該字典中所有鍵對(duì)應(yīng)的初始值。

get(key, default = None): 獲取鍵key對(duì)應(yīng)的值,如果不存在則返回默認(rèn)值default.

pop(key, [, default]): key存在,則刪除并返回dict[key],否則返回default。如果key不存在也不提供default,則引發(fā)KeyError異常。

setdefault(key, default = None): 如果字典中不存在key鍵,則用default賦值。

4. 迭代器,列表解析和生成器

1. 迭代器

? ? 從根本上說(shuō),迭代器就是有一個(gè)next()方法的對(duì)象,而不是通過(guò)索引來(lái)計(jì)數(shù),全部迭代完會(huì)引發(fā)一個(gè)StopIteration異常。

? ? 我們一般可以迭代序列,字典和文件:

In [56]: arr = [1, 2]In [57]: i = iter(arr)In [58]: i.next() Out[58]: 1In [59]: i.next() Out[59]: 2In [60]: i.next() --------------------------------------------------------------------------- StopIteration Traceback (most recent call last) <ipython-input-60-e590fe0d22f8> in <module>() ----> 1 i.next()StopIteration: ? ? 而迭代器實(shí)際上等價(jià)于for循環(huán): for i in seq:do_something_to(i) <==> fetch = iter(seq)while True:try:i = fetch.next()except StopIteration:breakdo_something_to(i)

2. 列表解析

? ? 語(yǔ)法如下:

[expr for iter_var in iterable if cond_expr]

實(shí)例如下:

In [61]: [x for x in range(6) if x % 2] Out[61]: [1, 3, 5]

3. 生成器表達(dá)式

? ? 語(yǔ)法如下:

(expr for iter_var in iterable if cond_expr) ? ? 列表解析的一個(gè)不足就是必要生成所有的數(shù)據(jù)。但是生成器表達(dá)式是返回一個(gè)生成器,每次計(jì)算出一個(gè)條目后,把這個(gè)條目yield出來(lái),采用了延遲計(jì)算。 In [63]: lst = (x for x in range(6) if x % 2)In [64]: lst Out[64]: <generator object <genexpr> at 0x7fdeec558320>In [65]: for i in lst:....: print i,....: 1 3 5 <==> In [67]: def fun(arr):....: for i in arr:....: yield i....: In [68]: arr = [1, 2, 3]In [71]: for i in fun(arr):....: print i,....: 1 2 3


轉(zhuǎn)載于:https://my.oschina.net/voler/blog/394856

總結(jié)

以上是生活随笔為你收集整理的python核心编程:杂记2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品午夜在线 | 一区精品视频在线观看 | 毛片看 | 亚洲精品乱码久久久久久蜜桃不卡 | www.视频一区| 日本午夜一级 | 韩国美女黄色片 | 国产精品一品二品 | www.xxx.日本| 国产丝袜第一页 | 欧美性色视频 | 日韩在线第三页 | 夜夜草天天干 | 丝袜诱惑一区 | 亚洲精品免费在线播放 | 99国产精品99 | 日本aⅴ视频 | 日韩成人无码 | wwwwxxxx国产 | 69re视频| 日韩视频久久 | www.99视频 | 麻豆导航| 两口子交换真实刺激高潮 | 成人免费短视频 | 久久亚洲精品石原莉奈 | av黄页| 韩国三级一区 | 久久精品视频99 | 爱操影院 | 经典三级在线视频 | 一级成人免费视频 | 丰满人妻一区二区三区53号 | 亚洲综合大片69999 | 成人av影院在线观看 | 日韩精品欧美精品 | 日本韩国欧美一区 | 欧美在线综合 | 色哟哟国产精品色哟哟 | 日不卡 | 91久久国产 | 日韩天堂在线观看 | 91蜜桃婷婷狠狠久久综合9色 | 狠狠操夜夜爽 | 先锋av资源网 | 国产伦精品一区二区三区视频痴汉 | 亚洲一区二区麻豆 | 黄色va | 亚洲字幕av一区二区三区四区 | 国产喷水视频 | 国产精品1234| 天堂中文在线看 | 激情综合丁香五月 | 最近免费中文字幕大全免费版视频 | 久久精品国产精品亚洲毛片 | 午夜色网| 国产毛片在线 | 欧美高h视频 | 欧美午夜精品久久久久免费视 | av中文字幕网站 | 欧美成在线 | 91一区二区三区在线观看 | 久久久国产精品黄毛片 | 中文字幕手机在线视频 | 亚洲AV无码成人精品区先锋 | 日韩亚洲欧美一区二区 | 国产一区二区三区小说 | 极品少妇xxxx精品少妇 | 国产精品扒开腿做爽爽爽男男 | 天天婷婷 | 中文字幕在线观看的网站 | 久久久久99精品成人片毛片 | 日韩精品中文在线 | 美女福利视频在线观看 | 国产精品久久在线 | 欢乐谷在线观看免费播放高清 | 日韩电影在线观看中文字幕 | 久久99免费 | 久久尤物视频 | 中文字幕一区二区三区人妻 | 黄色片网站在线 | 91全免费 | 亚洲人丰满奶水 | 国产视频1 | 久久亚洲av无码精品色午夜麻豆 | 91免费看片| 亚洲av成人片色在线观看高潮 | 韩国视频一区二区 | 日本精品三级 | 日韩一区二区三区免费在线观看 | 国产精品一区二区久久久 | 久久综合久久综合久久 | 人人射影院 | jzzijzzij日本成熟少妇 | 深夜福利国产 | 老汉色老汉首页av亚洲 | 日韩欧美亚洲国产精品字幕久久久 | 超碰在线网址 | 成人日韩视频 |