函數(shù),列表,元組,集合,字典,None,解析

1.函數(shù)

調(diào)用方法通過名稱將值傳入函數(shù)的時(shí)候參數(shù)的順序可以改變(注意改變順序需要把所有的參數(shù)都填上),但是當(dāng)有一個(gè)參數(shù)通過名稱傳值其右邊的所有參數(shù)都需要通過名稱傳值,否則報(bào)錯。同樣當(dāng)一個(gè)函數(shù)的一個(gè)參數(shù)設(shè)有默認(rèn)值時(shí)其右邊的所有參數(shù)都需要設(shè)置默認(rèn)值。

def testParams(age, flag):
    money = 500 if flag else 5 #相當(dāng)于java mony = flag ? 500 : 5
    ...

testParams(flag=False, age=1)正確
testParams(age=1, False) #錯誤 第二個(gè)參數(shù)也需要通過名稱傳值flag=False

def testParams(age, name='cheny', flag): #錯誤 flag也需要指定默認(rèn)值

2.列表

列表的創(chuàng)建:
a_list = ["a", "b", "mpilgrim", "z", "example"]
獲取列表的元素

a_list[0] == "a"
a_list[-1] == "example"
可以使用計(jì)算公式a_list[-n] == a_list[len(a_list) -n]

列表的切片

a_list[:3] == a_list[0:3]
a_list[:] == alist[0:len(a_list)]

向列表中新增加項(xiàng)的四種方式

a_list =[1]

  • a_list + [2, 'hello'] 結(jié)果為[1, 2, 'hello']
  • a_list.append([2, 'hello']) 結(jié)果為[1, [2, 'hello']]
    或者a_list.append('hello')結(jié)果為[1, 'hello']
  • a_list.extend([2, 'hello']) 結(jié)果為[1, 2 , 'hello']
    注意extend特別的地方a_list.extend('hello')結(jié)果為[1, 'h', 'e', 'l', 'l', 'o']而不是[1, 'hello']
  • a_list.insert(0, 'hello')結(jié)果為['hello', 1]

append()與extend()的區(qū)別,都只接收一個(gè)參數(shù)但是列表調(diào)用append()方法添加的只是一個(gè)對象,而extend方法添加的是一個(gè)或多個(gè)對象

在列表中檢索值

a_list = ["a", "b", "new", "mpilgrim", "new"]
a_list.count('new') == 2 返回列表中某個(gè)特定值出現(xiàn)的次數(shù)。
a_list.index('new') == 2 只返回第一次出現(xiàn)的位置索引值。

從列表中刪除元素

1.根據(jù)索引刪除
del a_list[1] 刪除列表中第二個(gè)元素
2.根據(jù)值刪除
a_list.remove('new') 刪除列表中第一次出現(xiàn)的new元素,
例如:a_list = ["a", "b", "new", "mpilgrim", "new"]執(zhí)行a_list.remove('new') 后結(jié)果為["a", "b", "mpilgrim", "new"]
3.帶返回值的刪除
a_list.pop()或者a_list.pop(1)
pop()不帶參數(shù)的調(diào)用將刪除列表中最后一個(gè)元素并返回所刪除的值
pop(1)類似于del a_list[1]刪除列表中第二個(gè)元素,但是相比del pop(1)將會返回被刪除的值。
對與空列表調(diào)用pop()將會報(bào)錯

修改列表中的值

a_list = [0, 'hello']
a_list[0] = 1 結(jié)果為[1, 'hello']

布爾上下文環(huán)境中的列表

在布爾類型上下文環(huán)境中,空列表為假值。
任何至少包含一個(gè)上元素的列表為真值。

a_list = []
if a_list:
    print('True')
else:
    print('False')

False

3.元組

元組是不可變的列表。一旦創(chuàng)建之后,用任何方法都不可以修改元素

a_tuple = ("a", "b", "mpilgrim", "z", "example")

元組不能添加刪除修改元素,沒有append()、 extend()、 insert()、remove() 和 pop() 這樣的方法
元組可以切片a_tuple[:2],可以查找元素a_tuple.index('example'),還可以使用in運(yùn)算符檢查某個(gè)元素是否存在于元組中

使用元組相比列表的優(yōu)點(diǎn):

  • 元組的速度比列表更快。如果定義了一系列常量值,而所需做的僅是對它進(jìn)行遍歷,那么請使用元組替代列表
  • 對不需要改變的數(shù)據(jù)進(jìn)行“寫保護(hù)”將使得代碼更加安全。使用元組替代列表就像是有一條隱含的 assert 語句顯示該數(shù)據(jù)是常量,特別的想法(及特別的功能)必須重寫。(??)
  • 一些元組可用作字典鍵(特別是包含字符串、數(shù)值和其它元組這樣的不可變數(shù)據(jù)的元組)。列表永遠(yuǎn)不能當(dāng)做字典鍵使用,因?yàn)榱斜聿皇遣豢勺兊摹?/li>

元組與列表可以相互轉(zhuǎn)換。內(nèi)建的 tuple() 函數(shù)接受一個(gè)列表參數(shù),并返回一個(gè)包含同樣元素的元組,而 list() 函數(shù)接受一個(gè)元組參數(shù)并返回一個(gè)列表。從效果上看, tuple() 凍結(jié)列表,而 list() 融化元組。

注意:元組使用圓括號定義( ),列表使用方括號[ ]定義。

創(chuàng)建單元素元組

如果創(chuàng)建單元素元組,需要在值之后加上一個(gè)逗號。沒有逗號Python并不會創(chuàng)建元組。
a_tuple = ('hello') #不會創(chuàng)建元組
a_tuple = ('hello', ) #正確創(chuàng)建單元素元組

通過元組給變量同時(shí)賦多個(gè)值

(x, y, z) = ('a', '2', 'c')
輸出x == ‘a(chǎn)’, y == '2', z == 'c'

該特性有多種用途。假設(shè)需要將某個(gè)名稱指定某個(gè)特定范圍的值??梢允褂脙?nèi)建的 range() 函數(shù)進(jìn)行多變量賦值以快速地進(jìn)行連續(xù)變量賦值。例如:

(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)

結(jié)果:MONDAY == 1 , TUESDAY == 2,... SUNDAY ==7

說明:內(nèi)建的 range() 函數(shù)構(gòu)造了一個(gè)整數(shù)序列。(從技術(shù)上來說, range() 函數(shù)返回的既不是列表也不是元組,而是一個(gè) 迭代器。

4.集合

集合的創(chuàng)建:
a_set = {1, 2}
創(chuàng)建一個(gè)空集合應(yīng)該使用set()函數(shù) 如:a_set = set() ,而不是a_set={}這種方式將會創(chuàng)建一個(gè)空字典

實(shí)際上集合以類的形式實(shí)現(xiàn)。
將列表轉(zhuǎn)換為集合調(diào)用set()函數(shù),例如:a_set = set(a_list) 同時(shí)也能通過list()函數(shù)將集合轉(zhuǎn)為列表。
注意:調(diào)用set()函數(shù)這實(shí)際上并不是調(diào)用某個(gè)函數(shù),而是對某個(gè)類進(jìn)行實(shí)例化。

集合是無序的,使用set()函數(shù)將列表轉(zhuǎn)為集合時(shí),元素順序?qū)淮騺y。不僅如此,每次使用該集合時(shí)元素順序相比上次都可能不同

例如:

a_list = ["a", "b", "mpilgrim", True, False, 42]
a_set = set(a_list)
print(a_set)

輸出結(jié)果:{False, True, 42, 'b', 'mpilgrim', 'a'}
向集合中添加值

有兩種方法向現(xiàn)有的集合中添加值:add()和update()
add()只接收單個(gè)數(shù)據(jù)類型參數(shù)
update()接收一個(gè)或多個(gè)集合,列表,元組。

集合元素是不可重復(fù)的,每個(gè)元素都是唯一值。如果添加一個(gè)集合中已有的值,只是一條空操作。

從集合中刪除元素

有三種方法可以用來從集合中刪除某個(gè)值。discard(),remove(),pop()
discard()與remove()都是通過值刪除,唯一的區(qū)別是,當(dāng)刪除一個(gè)列表中不存在的值時(shí)discard()不報(bào)錯,remove()報(bào)錯。
pop()方法帶返回值的刪除。由于集合是無序的,并沒有“最后一個(gè)”值的概念,因此無法控制刪除的是哪一個(gè)值。它基本是隨機(jī)的。

clear()方法刪除集合中所有的值。相當(dāng)于a_set = set()

常見集合操作

1.union() 方法返回一個(gè)新集合,其中裝著 在兩個(gè) 集合中出現(xiàn)的元素。
2.intersection() 方法返回一個(gè)新集合,其中裝著 同時(shí) 在兩個(gè)集合中出現(xiàn)的所有元素。
3.difference() 方法返回的新集合中,裝著所有在a_set出現(xiàn)但未在b_set中的元素。
4.symmetric_difference() 方法返回一個(gè)新集合,其中裝著所有 只在其中一個(gè) 集合中出現(xiàn)的元素 。
5.issubset()檢查一個(gè)集合是否為另一個(gè)集合的子集。
6.issuperset()檢查一個(gè)集合是否為另一個(gè)集合的父集。

5.字典

字典是鍵值對的無序集合。
字典的創(chuàng)建
a_dict = {"server": "db.diveintopython3.org", "database": "mysql"}
創(chuàng)建空字典a_dict = {}

字典的修改

a_dict = {"server": "db.diveintopython3.org", "database": "mysql"}
修改:a_dict["database"] = "blog" # {"server": "db.diveintopython3.org", "database": "blog"}
添加:a_dict["user"] = "cheny" # {"server": "db.diveintopython3.org", "database": "blog", "user": "cheny"}
1.在字典中不允許有重復(fù)的鍵。對現(xiàn)有的鍵賦值將會覆蓋舊值
2.字典鍵是區(qū)分大小寫的

混合值字典

字典的值可以是任何數(shù)據(jù)類型,包括整數(shù)、布爾值、任何對象,甚至是其它的字典。而且就算在同一字典中,所有的值也無須是同一類型, 您可根據(jù)需要混合匹配。字典的鍵要嚴(yán)格得多,可以是字符串、整數(shù)和其它一些類型。在同一字典中也可混合、匹配使用不同數(shù)據(jù)類型的鍵。

字典與列表之間同樣可以通過dict()方法與list()方法相互轉(zhuǎn)換

6.None

None 是 Python 的一個(gè)特殊常量。它是一個(gè)空值。None 與 False 不同。None 不是 0 。None 不是空字符串。將 None 與任何非 None 的東西進(jìn)行比較將總是返回 False 。

7.列表解析

a_list = [1, 9, 8, 4]
b_list = [b * 2 for b in a_list]
print(b_list) #[2, 18, 16, 8]
b_list = [b * 2 for b in a_list if b > 1] #注意if后面的b是列表中的元素,而不是* 2之后的b,b * 2是最后執(zhí)行的
print(b_list) #[18, 16, 8] 

b_list = [(b * 2, b - 1) for b in a_list if b > 1]
print(b_list) #[(18, 8), (16, 7), (8, 3)]

8.集合解析同列表解析。

9.字典解析

a_list = ['chenyou', 23, 'man']
b_list = ['name', 'age', 'sex']
a_dict = {f: a_list[index] for index, f in enumerate(b_list)}
print(a_dict) #{'name': 'chenyou', 'age': 23, 'sex': 'man'}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容