欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python筆記之a(chǎn) = [0]*x格式的含義及說(shuō)明

 更新時(shí)間:2022年05月13日 09:21:25   作者:SkyEscape  
這篇文章主要介紹了Python筆記之a(chǎn) = [0]*x格式的含義及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

python a = [0]*x格式的含義

a為一個(gè)含有x個(gè)字符串的列表

例如:

import sys
a = "12352523452334"
num = len(a)
k = int(num/3)
print(k)
sub = [0]*k
for i in range(k):
? ? sub[i] = a[i*3:i*3+3]
? ? isString = isinstance(sub,list)
? ? print(isString)
? ? print(sub[i])
print(len(sub))

4
True
123
True
525
True
234
True
523
4

python使用技巧與爬過(guò)的坑

1 dict的使用

python中的字典應(yīng)該是許多朋友常用的一種數(shù)據(jù)結(jié)構(gòu),其數(shù)據(jù)結(jié)構(gòu)如下:

{key: value}

這里主要列幾個(gè)字典使用的技巧。

1.1 dict的刪改查

其實(shí)對(duì)于dict的刪改查都需要用到查詢,比如改,就是先查詢到某個(gè)鍵值對(duì),然后再做更改操作。

可能許多初學(xué)者對(duì)于字典的訪問(wèn)是如下幾種方式:

for k, v in d.items():
?? ?balabala
for v in d.values():
?? ?balabala

其實(shí)這是一種特別浪費(fèi)性能的操作方式,因?yàn)閜ython中的dict是通過(guò)Hash方式來(lái)查詢鍵的。簡(jiǎn)單來(lái)說(shuō)就是查詢鍵的時(shí)間復(fù)雜度是O ( 1 ) O(1)O(1),而查詢值的時(shí)間復(fù)雜度是O ( n ) O(n)O(n)。放在代碼里面來(lái)說(shuō),就是:

for k in d.keys():

這種查詢方式是O ( 1 ) O(1)O(1)的時(shí)間復(fù)雜度,而:

for k, v in d.items():

或者:

for v in d.values():

是O ( n ) O(n)O(n)的時(shí)間復(fù)雜度。

所以為了節(jié)省查詢時(shí)間,我們?nèi)绻獙?duì)值進(jìn)行操作,都是如下:

for k in d.keys():
?? ?val = d[k]

而python三大數(shù)據(jù)結(jié)構(gòu):列表、元組、字典,就只有字典的鍵的查詢是O ( 1 ) O(1)O(1)的時(shí)間復(fù)雜度,其余的都是O ( n ) O(n)O(n)的時(shí)間復(fù)雜度。

1.2 dict的鍵

既然上面已經(jīng)說(shuō)到了dict的鍵是hash查詢的,所以dict的鍵有嚴(yán)格的要求,就是hashable的數(shù)據(jù)才能作為dict的鍵。

那么何為hashable?簡(jiǎn)單來(lái)說(shuō),就是在運(yùn)行過(guò)程中不可修改的。

就比如列表就是可以修改的,因?yàn)榱斜砜梢噪S時(shí)進(jìn)行append等操作,字典也是可以修改的,比如隨時(shí)可以進(jìn)行pop等操作。

那么什么是hashable的呢?常用的字符串、數(shù)字這些都可以,還有一個(gè)數(shù)據(jù)結(jié)構(gòu)是hashable的,就是元組,因?yàn)樵M是無(wú)法被修改的。所以當(dāng)你想要存儲(chǔ)一組數(shù)據(jù)作為鍵值的時(shí)候,可以考慮將這組數(shù)據(jù)轉(zhuǎn)換成元組,畢竟list和dict是可以相互切換的嘛。

2 numpy

2.1 array

這是我最近編碼過(guò)程中遇到的一個(gè)坑,就是array的賦值操作。我們通常的賦值操作就是:

a = b

但是對(duì)于numpy的ndarray對(duì)象,這種賦值不僅會(huì)將值賦過(guò)去,還會(huì)把內(nèi)存地址賦值過(guò)去,比如如下代碼:

import numpy as np
a = np.array([1, 2, 3])
print("id(a):", id(a))
b = a
print("id(b):", id(b))
print(id(a) == id(b))

輸出結(jié)果如下:

id(a): 2721844244768
id(b): 2721844244768
True

也就是說(shuō),如果你只是使用a = b這種操作,那么你在對(duì)b進(jìn)行操作的時(shí)候也會(huì)更改a,但是如果在某個(gè)使用場(chǎng)景,你需要對(duì)b進(jìn)行操作,但是不改變a,那么要用如下的代碼(b = a.copy()):

import numpy as np
a = np.array([1, 2, 3])
print("id(a):", id(a))
b = a.copy()
print("id(b):", id(b))
print(id(a) == id(b))

輸出結(jié)果:

id(a): 1549742256336
id(b): 1549742141968
False

3 文件操作

3.1 pickle

pickle是大家常用的一個(gè)文件,最大的優(yōu)點(diǎn)在于什么東西存儲(chǔ)進(jìn)去,就可以讀取什么東西出來(lái)。

pickle是以二進(jìn)制方式進(jìn)行存儲(chǔ)與讀取的,比如下面的栗子:

import pickle
with open(filepath_1, 'rb') as f:
?? ?file = pickle.load(f)
with open(filepath_2, 'wb') as f:
?? ?pickle.dump(file, f)

但是可能有許多初學(xué)者會(huì)在寫(xiě)入pickle的時(shí)候選擇追加方式寫(xiě)入(比如爬蟲(chóng)中斷等情況),但是這種方式是不可行的。因?yàn)閜ickle是二進(jìn)制操作,如果以追加方式寫(xiě)入,那么你在讀取的時(shí)候只能讀取到第一次寫(xiě)入的內(nèi)容,之后的內(nèi)容是無(wú)法讀取的。

那么在這種有可能因?yàn)橹袛嗟仍蛐枰恢碧砑觾?nèi)容到pkl里面,我比較推薦分成不同份的文件進(jìn)行保存,既可以保證文件能夠正常的讀取,也不用擔(dān)心因?yàn)槌绦蛑袛喽鴮?dǎo)致需要重新執(zhí)行的問(wèn)題。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python結(jié)合Selenium簡(jiǎn)單實(shí)現(xiàn)Web自動(dòng)化測(cè)試

    Python結(jié)合Selenium簡(jiǎn)單實(shí)現(xiàn)Web自動(dòng)化測(cè)試

    這篇文章是入門級(jí)別的應(yīng)用Python + Selenium進(jìn)行自動(dòng)化測(cè)試,包括環(huán)境搭建及簡(jiǎn)單的實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • pyinstaller打包程序exe踩過(guò)的坑

    pyinstaller打包程序exe踩過(guò)的坑

    這篇文章主要介紹了pyinstaller打包exe踩過(guò)的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 變長(zhǎng)雙向rnn的正確使用姿勢(shì)教學(xué)

    變長(zhǎng)雙向rnn的正確使用姿勢(shì)教學(xué)

    這篇文章主要介紹了變長(zhǎng)雙向rnn的正確使用姿勢(shì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python光學(xué)仿真理解Jones矩陣學(xué)習(xí)

    Python光學(xué)仿真理解Jones矩陣學(xué)習(xí)

    這篇文章主要為大家介紹了Python光學(xué)仿真理解Jones矩陣的學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-10-10
  • Python?數(shù)據(jù)庫(kù)操作SQL基礎(chǔ)

    Python?數(shù)據(jù)庫(kù)操作SQL基礎(chǔ)

    在本章節(jié)中,我們將討論?Python?數(shù)據(jù)庫(kù)操作的基礎(chǔ)知識(shí),重點(diǎn)關(guān)注?SQL即Structured?Query?Language,結(jié)構(gòu)化查詢語(yǔ)言,SQL?是用于管理關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)編程語(yǔ)言,可以用來(lái)執(zhí)行數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)控制等任務(wù)
    2023-06-06
  • python之NAN和INF值處理方式

    python之NAN和INF值處理方式

    這篇文章主要介紹了python之NAN和INF值處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python實(shí)現(xiàn)小球彈跳效果

    python實(shí)現(xiàn)小球彈跳效果

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)小球彈跳效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • python+VTK環(huán)境搭建及第一個(gè)簡(jiǎn)單程序代碼

    python+VTK環(huán)境搭建及第一個(gè)簡(jiǎn)單程序代碼

    這篇文章主要介紹了python+VTK環(huán)境搭建及第一個(gè)簡(jiǎn)單程序代碼,簡(jiǎn)單介紹了vtk,然后分享了安裝步驟,最后涉及一個(gè)簡(jiǎn)單的代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Python3+Selenium+Chrome實(shí)現(xiàn)自動(dòng)填寫(xiě)WPS表單

    Python3+Selenium+Chrome實(shí)現(xiàn)自動(dòng)填寫(xiě)WPS表單

    本文通過(guò)python3、第三方python庫(kù)Selenium和谷歌瀏覽器Chrome,完成WPS表單的自動(dòng)填寫(xiě),通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python實(shí)現(xiàn)Appium端口檢測(cè)與釋放的實(shí)現(xiàn)

    Python實(shí)現(xiàn)Appium端口檢測(cè)與釋放的實(shí)現(xiàn)

    這篇文章主要介紹了Python實(shí)現(xiàn)Appium端口檢測(cè)與釋放的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論