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

歡迎訪問 生活随笔!

生活随笔

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

python

pb 修改数据窗口种指定字段位置_第三章 Python数据类型 容器

發布時間:2024/10/8 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pb 修改数据窗口种指定字段位置_第三章 Python数据类型 容器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據類型 容器

Python中的數據包括元素和容器兩大類:

元素:

1、數字

包括整數、浮點數。

1.1整數

1.2浮點數

2、布爾類型


3、刪除數字對象引用,例如:

4、數字類型轉換

5、數學函數

6、字符串

6.1、如何在Python中使用字符串?

a、使用單引號(')

用單引號括起來表示字符串,例如:

b、使用雙引號(")
雙引號中的字符串與單引號中的字符串用法完全相同,例如:

c、使用三引號(''')
利用三引號,表示多行的字符串,可以在三引號中自由的使用單引號和雙引號,例如:

6.2日期和時間

獲取當前時間,例如:

6.3、獲取格式化的時間

????可以根據需求選取各種格式,但是最簡單的獲取可讀的時間模式的函數是asctime():

6.4、日期轉換為字符串

6.5、字符串轉換為日期

6.6、獲取日期差

6.7、獲取時間差

6.8、獲取上個月最后一天

6.9、字符串日期格式化為秒數,返回浮點類型:

6.10、日期格式化為秒數,返回浮點類型:

6.11、秒數轉字符串

6.12字符串常用內置函數

容器:

????Python中,可包含其他對象的對象,稱之為“容器”。容器是一種數據結構。
????常用的容器主要劃分為兩種:序列(如:列表、元祖等)和映射(如:字典)。序列中,每個元素都有下標,它們是有序的。映射中,每個元素都有名稱(又稱“ 鍵 ”),它們是無序的。????除了序列和映射之外,還有一種需要注意的容器——“ 集合 ”。

1、通用的序列操作

有 5 種操作是所有序列中通用的。

(1)、索引

所謂“索引”,就是在序列中,根據所需元素的下標,返回所需元素。

以字符串的索引為例

‘ 2 ’為第三個元素的下標。當然,為了節省時間,我們大可不必為了索引而引入一個變量。我們可以直接在字符串上索引。

直接在我們的目標序列后面加個索引所需的中括號就可以了。

不僅如此,我們還可以在input函數上對用戶輸入的內容直接索引。

(2)、切片

切片,就是在序列中切一塊。

索引就是拿我們想要的那一個,切片就是切我們想要的那一塊。索引只能拿一個,切片可以切一段。其實本質上就是一種東西,切片就是索引的加強版。

兩個或三個索引就是切片。而且我們在上面所說的情況,也適用。

特別的,若第二個索引在第一個索引之前,則輸出空序列。

????若用戶填入空索引,計算機將根據前兩個索引所處的前后位置,默認為序列的前后端點。

????第三個索引有關“步長”,步長不能為“0”,否則程序無法向前移動。當步長為負數時,切片從后向前執行。

(3)、序列相加

其實就是用“+”來拼接序列。例如:

只不過相加的前提是兩者必須為同一類型的序列:

(4)、乘法

其實就是用“*”來進行乘法運算。

(5)、成員資格

????所謂“成員資格”測試,就是指“用運算符 in 來檢測指定元素是否包含于序列”。

例如:

如果元素包含于序列,程序返回“True”;反之,返回“False”。

2、列表

????現在來總結下列表相比于其他序列特殊的地方——“可修改”與“列表方法”。

開始之前應提到函數 list。

該函數對任何序列都有用。

(1)修改列表

a、給元素賦值

直接利用下標就可以修改列表(明顯的用戶友好型)。

b、用 del 函數刪除

其實 del 函數對很多東西都適用。

c、用切片替換

切片的作用的實際情況就是用一個片段替換另一個片段。

發揮點想象力,用空列表來操作的話,我們就可以達到和刪除一樣的效果。

以及和增加一樣的效果。

(2)、列表方法

????? 所謂方法,就是指與對象(字符串,參數等)緊密聯系的函數。方法調用時,方法前要加上對象名和句點。

a、append

append函數會將指定對象直接加到列表末尾。

注意:養成良好編程習慣:????? 在實際運用中,為了不使計算機發生識別障礙,一般不提倡使用和函數名一樣的變量名。所以之前所舉的例子中,使用“ list ”命名變量實際是一個錯誤的示范(與 list 函數同名)。

b、clear

像字面意思一樣,一鍵歸零。

實際效果可以用另一句話代替。

這樣就不用打那么多字。

c、copy

和字面意思一樣,復制。

當然,它也是可替代的。

實際上,這函數意義不大,因為根本沒必要這么麻煩。

直接賦值就行了。

d、count

計數的,看你出現了幾次。

e、extend

append 的增強版,可以把一段加到列表后面。

同樣可以被代替,一個簡單的加號就可以完成。

切片也可以做到,但代碼可讀性相對不高。

f、index

????? 在列表中依次(下標從小到大)查找元素,若元素存在,則返回第一次出現的下標。反之,若元素不存在,則返回錯誤。

g、insert

按你所提供的下標插入你所提供的元素。(前為下標,,后為元素)

h、pop

????? 從列表中依據你所提供的下標刪除對應元素,并返回所刪除的元素。當pop函數括號中不含下標時,默認為列表最后一個元素。

若括號中含有下標,則按括號中來進行。刪除后的列表將不含刪除值。

注:????? pop函數是唯一一個既修改了列表又返回了函數值的函數。(注意“修改了”的前提,copy函數便沒有修改,也含有返回值。)
如圖:????? list1在接受了函數append的返回值后,直接變成了None,這是因為append函數直接返回了None。你可能會發現這里我用了print函數,而沒有像之前一樣用語句直接返回。這是因為對空的list1,只有用print才有返回值,用語句直接輸入無返回值。

而pop函數有返回值。

????? push 和 pop是大家普遍接受的兩種“?!辈僮鳌ython不提供 push ,所以我們用 append 來代替。

i、remove

remove會刪除列表中含有的第一個用戶指定的元素。

j、reverse

將列表倒過來。

你會發現這些函數全都可以用切片來實現。

k、sort

將列表按從小到打的順序排序,無返回值。

這里要提到一個類似的函數——sorted;

sorted 有返回值,故可以直接賦值。

sorted 函數適用于所有序列,但它永遠返回一個列表。

l、高級排序

sort 函數可以接受兩個關鍵字參數——key 和 reverse。

????? key 會給每一個元素生成一個相應的鍵,再按根據生成的鍵來進行排序。

那么,key 是以什么為參考來設置鍵的呢?這依賴于我們給它所賦予的函數。

????? 我們知道函數 len 是返回每個元素的長度,而“ key = len ”,就是我們前面所提到的將函數賦予 key 。這里,len 函數將每個元素的長度返回,key 參數接收了這些長度值并轉化為鍵,sort 函數接受了鍵并進行排序,最終得到我們的結果。

????? 與 key 相同的是,reverse 參數也需要賦值。但我們不能賦予其函數,而只能賦予其布爾值。reverse 將根據布爾值來決定函數排序后的反向排列是否執行。

3、元組

????? 元組也是序列,只是不能修改。語法也簡單,加個逗號就可以變元祖。圓括號反倒無關緊要。

逗號至關重要!

有無逗號就是計算機識別是否為元組的依據。

????? 元組并不復雜,對它的操作也不多。除了不可修改外,與它打交道的方法和對列表打交道的方法沒有不同(index、count等元祖沒有的方法除外。)

比如切片在列表怎么用,對元組就怎么用。

????? 一般而言,在序列方面的需求,一個列表就足以滿足。那么我們接觸元組有什么意義嗎?

(1)、元組用作映射中的鍵。(列表不能)

(2)、有些內置函數返回元組。(你還有什么理由?)

4、字符串

????? 前面我們已經講過序列的基本操作方法,所以如何使用索引和切片來操作字符串應該不是什么難點。和元祖相同的一點是,字符串不能修改,所以切片賦值和元素賦值等方法都是違法的。當然,我們可以通過其他方法來達到與刪減同樣的效果。

(1)、設置字符串的格式

????? 設置字符串格式的內容包含很多,這里也只是介紹其主要內容。在接下來的小節中,我們的主要思想是利用 format 函數來替換“替換字段”。

替換字段主要由三部分構成:字段名、轉換標志、格式說明符。接下來我們會詳細說明相關內容。

a、替換字段名

????? 字段名,就是指相應字段的名號(索引和標識符)。利用 format 函數來替換相應字段的字段名,就是我們這一小節的主要目的。

在此之前,我們先來了解一下 format 函數的功能。

format 函數會用括號里的內容替換字符串內花括號內的內容。

????? 當然,多個替換也是可以進行的。當我們不設置指定順序時,計算機會按默認位置進行替換。

我們可以用數字來指定替換的位置(從0起步)。

也可以利用關鍵字參數。

當然,用戶并非只能訪問值得本身,還可以訪問值的成分。

也可以使用句點表示法來訪問導入的模塊中的方法、屬性、變量和函數。

b、基本轉換

????? 根據我們提供的“轉換標志”,利用 format 函數可以將目的字段轉換為我們想要的格式。

????? 當我們用來轉換的字段為字符串時,一般我們會在目的字段與轉換標志之間夾入“!”。

????? 如圖,這里花括號內的 python 即為目的字段,format 函數括號內的 python 即為我們指定的字符串,而!后的“a、s、r”就是我們所提到的轉換標志。

????? 計算機會先用 format 函數括號內的內容代替花括號里的內容,再根據轉換標志轉換替換后的數據。

????? 這里的 s、r、a、分別表示 str、repr、ascii。了解了這個信息,那么 idle 的返回值就很好理解了。

????? 此外,當我們用來轉換的字段為數值時,一般我們會在目的字段與轉換標志之間夾入":"。

這里的 b 表示將字段轉換為二進制。

????? 當然,還有許多其他的轉換標志:c(unicode)、d(十進制)、e(科學表示法)、E(同 e ,但 E 用來表示指數)、f(定點數)……

這里便不一一指出了。

c、寬度、精度、千位分隔符

????? 某些時候,我們在返回一個值時,需要調節返回值的寬度,以便對齊。所謂的調節寬度,其實就是通過在返回值的前面或后面加空格來調節返回值的位置。

這時,若替換字段為數值,則默認在返回值前面加空格;若替換字段為字符串,則默認在返回值后面加空格。

????? 這里的 20 指的就是所加空格的數量,而空格的數量直接調節了寬度。總結即為:在冒號后面直接加數值來調節寬度。

設置浮點數時,計算機一般默認精確到小數點后六位。但是我們可以根據需要調節我們指定數的精度(精確度)。

????? 這里的“.”表示精度調節,“3”表示精度調節到,“.3”表示精度調節到小數點后3位。

當然,其他類型也可指定精度。

????? 值得注意的是,如果要調節精度與寬度,那么就不能像之前一樣用“!”分隔目的字段與指示符,而必須用“:”。

當然,我們也可以同時使用寬度調節、精度調節、轉換標志。

????? 要注意必要的格式,寬度調節在最前,精度調節在其后,轉換標志在最后,特別提出,這里的 f 表示定點數的轉換。

另外一個值得注意的是“千位分隔符”。

????? 當我們在冒號后面加逗號時,則計算機識別我們需要使用千位分隔符。千位分隔符,顧名思義,就是每個三個數位分隔一次。

我們可以同時使用之前所提到的知識。

千位分隔符會放在寬度調節與表示精度調節的句點之間。

d、符號、對齊和用 0 填充

有三種方法可以使你輸出負數。

第一種,直接在 format 函數后的括號內加負數。

第二種,運用符號說明符。符號說明符往往放在冒號與寬度之間。特別的,如果用空格代替符號說明符,則默認在數值前填充空格。

第三種,直接在字符串內加符號。

????? 很多需要設置數字格式的機制(例如打印一份表格)在大多數情況下只需設置相應的寬度與精度即可。但是在有些時候,我們需要特殊的操作才能實現我們的目的。例如當對象中含有字符串與數值時,由于字符串與數值的默認對齊方式不同(字符串會在前面填充空格,數值會在后面填充空格),往往將引發一系列問題。

????? 為了解決這些問題,我們只需在特定的位置增加一些符號就行了。例如,若在冒號與寬度之間加個“0”,則表示用“0”來填充數值前的空隙。這可以很好的解決當負數存在時,數據長度參差不齊的問題。

????? 若在冒號與寬度之間加入“、=”,則表示“左對齊、右對齊、居中間”,方便數據的一體化操作。

????? 當然,我們還可以用指定字符來代替默認的空格,只需在冒號與寬度間加入指定字符。(注意,特殊字符“$”后加了“^”)

????? 特別的一種情況,如果我們在冒號與寬度之間加入“=”,那么程序的輸出值就會將符號說明符與數值遠遠隔開(實質:默認將符號放在最前面)。

????? 最后我們要提到的一個要素是“#”符號,你可以將其放入符號說明符和寬度之間。(沒有符號說明符的話,就是冒號與寬度之間)根據你的數據類型不同,“#”將引發不同的數據轉化方式。下面以二進制和十進制為例,在不同的情況下加入“#”,所產生的效果也不同。前者為直接在數值前加入進制類型的表示符,后者為精確到小數點后幾位。

5、字符串方法

????? 前面我們談到了列表的方法,字符串的方法比其多得多。這里我們只討論其中最有用的方法。當然,筆者以后可能會在這篇文章的基礎上,繼續補充更多的字符串方法,所以,應該先學好這篇文章的方法再考慮更多的事情。

字符串方法大多是從模塊 string 中繼承而來,在較早的 python 版本中,這些方法就是模塊 string 中的函數。如果有需要,我們至今仍可以引用這個模塊。

為什么這個模塊至今仍未淘汰?

????? 因為模塊 string 包含一些字符串方法里沒有的函數與常量。
例如:


string.digits:包含數字0~9的字符串。
string.ascii_letters:包含所有ASCII字母(大寫與小寫)的字符串。
string.punctuation:包含所有ASCII標點字符的字符串。
…………

????? 當然,雖然說的是ASCII字符,但其實是未解碼的Unicode字符串。

接下來,在講述相關方法時,我可能會繼續說明其他相關方法,而這些附加說明的方法不是我們今天的主要內容,讀者可以根據需要自行選學。(會放入特定的版塊)

(1)、center

????? 運用 center 方法,我們可以在指定字符串的兩邊填充特殊字符(默認為空格)。

????? 括號里的數字限定了程序輸出的字符串的長度。觀察下面的圖片應該就可以明了我的意思。

????? 計算機會先獲取輸入字符串的位數,與 center 方法里的數值進行比較。如果數值大于位數,那么計算機會將輸入字符串居中,多余位置進行指定字符的填充工作。計算機會默認將多余位置左右平均分配,但如果多出來的數是單數,那么計算機會默認把多出來的一位放在右邊(觀察上面第三個小程序就可以明了)。

如果位數大于或等于數值,那么計算機會直接返回原字符串。

類似方法擴展(再次強調,下面的內容不是重點,請自行選學):


string.ljust(width[,fillchar]):返回一個長度為 max(len(string),width) 的字符串,其開頭為當前字符串的副本,末尾為 fillchar 的指定字符(默認為空格)。
string.rjust(widtn[,fillchar]):返回一個長度為 max(len(string),width) 的字符串,其開頭為 fillchar 的指定字符(默認為空格),末尾為當前字符串的拷貝。
string.zfill(width):返回一個長度為 width 的字符串,相比原字符串,符號說明符(+、-)移到了開頭,字符串的左邊已被 0 填充。

(2)、find

我們可以通過 find 方法來檢驗字符串中是否含有某一子串。若子串存在,則 find 方法會返回該子串第一次出現的位置上的第一個字符的位置,若沒有找到,則返回-1。

這就類似于我們之前提到的列表方法 index。

????? 之前講 index 時沒有提到某個細節,在這里和 find 一起提出來。find 和 index 均可以指定遍歷的初始索引和終止索引。

????? 三個位置分別代表(“子串”,起始索引,終止索引)。值得注意的是,該方法便利的范圍包含起始索引位置,不包含終止索引位置。Python中常有這樣的設定。

類似方法擴展:


string.rfind(sub[,start[,end]]):返回遍歷到的最后一個子串的最后一個字符的位置的索引,若沒有找到,則返回-1,可以指定起始索引和終止索引。
string.index(sub[,start[,end]]):返回遍歷到的第一個子串的第一個字符的位置的索引,若沒有找到,則返回 ValueError 異常,可以指定起始索引和終止索引。
string.rindex(sub[,start[,end]]):返回遍歷到的最后一個子串的最后一個字符的位置的索引,若沒有找到,則返回 ValueError 異常,可以指定起始索引和終止索引。
string.count(sub[,start[,end]]):記錄 sub 出現的次數,可以指定起始索引和終止索引。
string.startswith(prefix[,start[,end]]):檢查字符串是否以 prefix 打頭,可以指定檢查的起始索引和終止索引。
string.endswith(suffix[,start[,end]]):檢查字符串是否以 suffix 結尾,可以指定檢查的起始索引和終止索引。

(3)、join

字如其意,可以合并序列的元素。

????? 值得注意的是:第一,用來合并的序列必須是字符串列表;第二,其實際效果是將原字符串插入字符串列表的空隙中從而形成一個新的字符串。詳情請見圖。

(4)、lower

lower 會將字符串內所有的英文字母改為小寫形式。

類似方法擴展:


string.islower():檢查字符串中所有英文字母是否都為小寫。
string.istitle():檢查字符串中位于非字母的后面的第一個字母是否為大寫,其他字母是否為小寫。
string.isupper():檢查字符串中的所有英文字母是否都為大寫。
string.translate(table):根據轉換表 table 對字符串中的所有字符都進行轉換,并返回結果。
string.capitalize():返回字符串的副本,但第一個字母大寫。
string.casefold():返回經過標準化后的字符串。
string.swapcase():反轉字符串中所有字母的大小寫,并返回。
string.title():將字符串中位于非字母的后面的第一個字母轉換為大寫。
string.upper():將字符串中的所有英文字母轉換為大寫。

詞首大寫問題:

????? 既然說到 tittle 方法,就不得不談談詞首大寫問題。確實,title 可以將首字母轉換為大寫。但它的轉換結果卻有些不合理。

????? 你看,它將空格識別為了非字母的字符,從而導致每個單詞都變成了首字母大寫。另一種類似的方法是使用 string 模塊中的函數 capwords。

????? 那么,可不可以改善這個問題呢?當然可以,但是這得靠你自己改善自己的代碼,注意各種標點符號可能導致的結果。
總而言之,靠自己。

(5)、replace

用 replace 方法將指定字符串替換為另一個字符串,并改變結果。

用不了多久,你就會明白這方法很有用。

類似方法擴展:


string.expandtabs([tabsize]):返回將字符串中的制表符展開為空格后的結果,可指定可選參數 tabsize( 默認為8 ) 。

(6)、split

split 恰好是 join 的反面,依據目標字段分割指定字段。

????? 如果你沒有指定分隔符的話,程序就會默認在單個或多個連續的空白字符(空格、制表符、換行符等)處進行拆分。

類似方法擴展:


string.partition(sep):在字符串中搜索 sep,并會以括號中的方式返回元祖。(sep 前的字段,sep,sep 后的字段)
string.rpartition(sep):功能與上一個相同,但返回的元祖前后相反。
string.split([sep[,maxsplit]]):與 split 功能相同,但方向為從后往前。maxsplit 可以指定最大劃分數。
string.splitlines([keepends]):返回一個列表,其中包含字符串的所有行,若參數 keepends 為 true,則將會包含換行符。

(7)、strip

strip 可用來刪除字符串開頭和末尾的指定字符,當參數為 None 時,則默認為空格。

類似方法擴展:


string.lstrip([chars]):將字符串開頭所有的 chars 都刪除,并返回結果。
string.rstrip([chars]):將字符串末尾所有的 chars 都刪除,并返回結果。

應用舉例:

????? 假設你需要依據學校的數據庫來查找亞歷山大同學的相關數據,那么你自然需要以他的名字為索引。????? 但是,你無法確定這位同學在輸入自己的名字時所輸入的大小寫情況。無法明了情況,一個個試的話就會很費力。一個學生還可以試出來,一百個呢?
如何解決這種情況?只需利用 lower 一鍵變成小寫,再搜索 “Alexanda”即可。
同樣的,假設亞歷山大同學是為標新立異的同學,他在輸入自己的名字時,加入了特殊字符來裝飾自己的名字,例如“ **$$ Alexanda . Bell $$** ”。????? 那么這時便可以使用 strip 來消除這位同學的鬼點子,雖然不確定特殊字符具體是哪幾個,但我們可以將鍵盤上的字符全部輸入為參數,就可以消除所有特殊字符。當然,若是他引用了Unicode里的特殊字符的話,已經可以暴打一頓了。

(8)、translate

????? translate 和 replace 一樣可以替換字符串的特定部分,雖然 translate 只可以替換單字符,但由于 translate 可以同時替換多個字符,所以效率要高于 replace 。

????? 為了使用 translate,我們要確立一個轉換表 table 。table 將引入兩個參數,確立 Unicode 碼點間的映射關系,進行轉換。

例如,假設我們要將一段英語文本改成帶有德國口音的版本,那么我們有必要將所有的“c”,“s”轉換成“k”,“z”。

當然我們也可以直接查看 table,不過我們只能看到碼點而已。

(9)、判斷字符串是否滿足特定的條件

????? 很多以 is 開頭的字符串方法都會判斷指定的字符串是否滿足某些條件,若滿足,則執行該方法,反之,則不執行。

例如:string.isalnum、string.isalpha、string.isdecimal、string.isdigit、isspace……

????? 這里便不一一指出,有需要可以自行上網搜索。

接下來,我們開始聊聊字典。

6、字典

????? 字典直接這樣創造,前“鍵”后“值”,合起來稱之為“項”。(字典中的“鍵”必須是獨一無二的)

????? 字典是 Python 中的唯一內置映射,和之前所提到的列表、字符串一樣,字典也擁有它的轉換函數—— dict (其實根本就不是一個函數,而是一個類)。值得注意的是,下圖的轉換我們利用了元組。

也可以利用關鍵字實參來調用這個函數。

(1)、字典的基本操作

字典的基本操作與序列非常類似。

len( dict ):返回字典 dict 對應的項數。
d[ k ]:返回與鍵 k 相應的值。
d[ k ] = v:直接將值 v 關聯到鍵 k 。
del d[ k ]:刪除鍵為 k 的項。
k in d:檢查鍵 k 是否包含于字典 d 。

這里指出一些重要的不同之處:

a、鍵的類型:與序列的索引不同,字典的鍵不限于整數,任何不可變的數據類型皆可以為鍵。

b、自動增加:我們可以直接將字典不含有的項加入字典,而不需像序列一樣用取代或函數的方式,這一點之后會說明。

c、成員資格:a in d 是指 a 是否存在于字典 d 的鍵中,而不是值中。而在序列中,in 用來查找相應的值。

這里我們要詳細說明一下第二點。

????通過程序運行我們可以看到,我們無法直接在列表中加入一個新的元素。但是對于字典,我們可以直接加入一個新的項。

????如果我要使得我對列表 list1 的操作可行,我就不得不在列表 list1 中加入51個 None 。

(2)、將字符串格式設置功能用于字典

????? 之前講過利用字符串格式設置功能來設置值得格式。其實,我們也可以利用利用字典,來使得格式設置更容易。但是在使用字典時,我們必須使用 format_map 來指明對象。

????? 如你所見,通過 format_map 指明對象后,我們可以通過鍵來同時代入多個對象。不得不提的是,在模板系統中,這種設置方式很有用。

(3)、字典方法

????? 字典方法的使用并沒有列表和字符串那樣頻繁,所以可以在需要時,再來學習這里。

a、clear

????? 和列表中的 clear 一樣,可以清除字典中的所有項。這個方法其實是很有用的,我們來看兩段代碼:

第一段:

第二段:

????? 我承認上述代碼對初學者不太友好,這主要有關 python 的數據儲存方式,如果你可以明了我在說什么的話,你可以很容易就從上面的代碼中明了我想表達 clear 的什么用法。如果看不懂上述代碼,可以先忽略上述代碼,直接看下一個方法。

b、copy

????? 和列表方法中的 copy 一樣,copy執行的是字典的復制。然而這種復制是一種“淺復制”。觀察下列代碼:

????? 和之前一樣,如果你明了 python 的數據存儲方式,就能看懂上述代碼究竟發生了什么。當我們執行淺復制時,如果替換副本中的值,原本不會改變。但若修改副本中的值,則原本會改變。

????? 深復制則不會發生這種問題,如果要實現深復制的話,就必須使用模塊 copy 中的函數 deepcopy 。

c.fromkeys

????? 使用該方法可以創建一個新字典,其中包含指定的鍵,且每個鍵對應的值都是 None 。

????? 當然,也可以直接對 dict 調用 fromkeys 。我們之前說過 dict 并非函數,而是類。熟悉了這一點,就很好理解這一操作。

當然,我們也可以指定我們所需要的值。

d、get

如果你試圖直接訪問字典中不存在的項。

如果你使用 get 來訪問項,如果項不存在:

如果項存在:

那么他就等價于直接訪問字典的結果了。

e、items

????? items 會返回一個包含所有字典項的列表,其中每個元素都為鍵值對的形式,且排列順序不確定。

????? 這種類型稱之為“字典視圖”,可以用于迭代。我們可以用 len() 確認其長度,以及用 in 對其執行成員資格檢查。

????? 字典視圖的一個特性就是:它不屬于復制,它始終是底層字典的反應,底層字典發生變化,相應的字典視圖也會發生變化。

當然,我們可以之間將字典視圖用 list 轉化為列表進行復制。

f、keys

返回一個字典視圖,但只包含鍵。

g、pop

同列表中的使用一樣,效果也一樣。不過 pop 的括號中放入的是鍵。

h、popitem

類似于 pop ,由于字典屬于映射,各元素之間沒有順序關系,所以 popitem 只是隨機剔除一個項。如果想要 popitem 以可預測的順序彈出項,請參閱模塊 collections 中的 OrderedDicts 類。

i、setdefault

類似 get ,可以獲取與指定鍵相關聯的值。當字典不包含該項時,則自動加入該項。

j、update

使用另一個字典中的項來更新目標字典。沒有的會加入,不同的會替換。

k、values

類似于 keys,返回一個有字典中的值所組成字典視圖。

????通過以上對于數據類型和容器的講解,想必大家一定受益匪淺,希望大家繼續關注以后的課程!

總結

以上是生活随笔為你收集整理的pb 修改数据窗口种指定字段位置_第三章 Python数据类型 容器的全部內容,希望文章能夠幫你解決所遇到的問題。

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