字典、數(shù)組、元組、集合、切片

數(shù)組、多維數(shù)組

數(shù)組聲明:

stus = ["曾若天","吳康飛","劉慧杰" ]

新增:

stus.append("candy")

stus.append("李雪松")

stus.insert(0,"趙瑩瑩")

stus.insert(2,"李興培")

insert中,0是在數(shù)組中的索引位置,“”添加的內(nèi)容

修改:

把stus“111”修改為鄧金嬌

stus[2] ="python"

# stu = "111"

# if stu in stus:

#? ? index = stus.index(stu) #如果查找不存在元素,會(huì)報(bào)錯(cuò)

#? ? stus[index] = "鄧金嬌"

#? ? print(stus)

刪除:

stus.append("candy")

print(stus)

# stus.pop()? #刪除末尾的元素

# stus.pop(0)#刪除指定下標(biāo)的

# stus.remove("candy")#刪除指定的元素,只刪除第一個(gè)

# del stus[0]

查找:

nums = [82,23,235,236,121,1,0,3,25,26]

stus.count("candy") ??#查找元素出現(xiàn)的次數(shù)

nums.sort()#排序,默認(rèn)是升序

nums.sort(reverse=True)#排序,默認(rèn)是升序,會(huì)改變?cè)瓉韑ist的值

# nums.reverse()#反轉(zhuǎn)list,會(huì)改變?cè)瓉韑ist的值

# stus.clear()#清空list

stus.extend(nums)#把另外一個(gè)list里面的元素都加入到一個(gè)list里面


多維數(shù)組:

l = [1,2,3,4,5,6,[7,8,9,10,11]]#2維數(shù)組

l2 = [1,2,3,4,5,6,

[7,8,9,10,11,["zengruotian",'abc']

]

]#3維數(shù)組

print(l[-1][3]) 數(shù)組下標(biāo)從0開始,-1是指數(shù)組的最后一位

print(l2[-1][-1][0])


切片

切片用來拆分讀取數(shù)組的數(shù)據(jù),切片并不會(huì)改變正在操作的列表,切片返回的是其子列表,返回的是一個(gè)新的棧的拷貝副本。

切片的索引有非常有用的默認(rèn)值;省略的第一個(gè)索引默認(rèn)為零,省略的第二個(gè)索引默認(rèn)為切片的索引的大小,如果是字符串,則為字符串大小。

#切片就是list范圍取值的一種方式

#顧頭不顧尾

# li = list(range(1,10))

# print(li)

# print(li[0:3]) #0:3

# print(li[:3]) #0:3

# print(li[1:3]) #0:3

# print(li[:]) #0:3

# print(li[0:11:2]) #開始:結(jié)束的索引:步長(zhǎng)(隔幾個(gè)取一次)

# print(li[-1:-5:-1])#負(fù)的是從右向左取值,這時(shí)候步長(zhǎng)應(yīng)該也要是負(fù)的,不然取不到數(shù)值

# print(li[::-1])


>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

>>> letters

['a', 'b', 'c', 'd', 'e', 'f', 'g']

>>> # 替換某些值

>>> letters[2:5] = ['C', 'D', 'E']

>>> letters

['a', 'b', 'C', 'D', 'E', 'f', 'g']

>>> # 現(xiàn)在移除他們

>>> letters[2:5] = []

>>> letters

['a', 'b', 'f', 'g']

>>> # 通過替換所有元素為空列表來清空這個(gè)列表

>>> letters[:] = []>>> letters

[]

字典、字典嵌套

字典是無序的鍵值對(duì)(key:value)集合,同一個(gè)字典內(nèi)的鍵必須是互不相同的。一對(duì)大括號(hào)?{}?創(chuàng)建一個(gè)空字典。

創(chuàng)建:

student_info = {

"addr":"北京",

"name":"曾若天",

"age":18,

"high":180,

"tizhong":150,

}


新增:

# student_info["age"] = 19

# student_info["money"] = 300000


許多時(shí)候我們需要往字典中的元素添加數(shù)據(jù),我們首先要判斷這個(gè)元素是否存在,不存在則創(chuàng)建一個(gè)默認(rèn)值。如果在循環(huán)里執(zhí)行這個(gè)操作,每次迭代都需要判斷一次,降低程序性能。

我們可以使用?dict.setdefault(key, default)?更有效率的完成這個(gè)事情。


>>> data = {}

>>> data.setdefault('names', []).append('Ruby')

# student_info.setdefault("car","bmw")

#如果是已經(jīng)存在的key,setdefault不會(huì)修改已有的值


修改:

student_info["age"] =19


取值:

# print(student_info["name"])

# print(student_info["age"])

# print(student_info.get("addr"))

# print(student_info.get("tizhong"))


刪除:

# student_info.pop("age")

# del student_info["age"]

# student_info.popitem() #刪除最后一個(gè)元素


其他的方法:

# student_info.clear() #清空

# d = {"phone":110}

# student_info.update(d) #合并兩個(gè)字典

# print("name" in student_info.keys())

# print("name" in student_info)#直接用in判斷的話,就判斷這個(gè)key是否存在

#student_info.has_key("name")#python2里面有,python3里面沒有

# print(student_info)

# for key in student_info:#直接循環(huán)字典,每次取的是字典的key,比較高效的方式

#? ? value = student_info[key]

#? ? value2 = student_info.get(key)

#? ? print("%s -> %s" %(key,value))

#? ? print("%s -> %s" %(key,value2))

#


字典嵌套

元組

元組是由數(shù)個(gè)逗號(hào)分割的值組成。

#tuple

l = [1,2,3]

t = (1,2,3)

print(t[0])

元組是不可變類型,這意味著你不能在元組內(nèi)刪除或添加或編輯任何值。如果你嘗試這些操作,將會(huì)出錯(cuò)

>>> a = (1, 2, 3, 4)

>>> del a[0]

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: 'tuple' object doesn't support item deletion

通過內(nèi)建函數(shù)?type()?你可以知道任意變量的數(shù)據(jù)類型。

>>> type(len)

<class'builtin_function_or_method'>

集合:

#set 集合天生可以去重,集合是無序的

s = {1,2,3,3,4,4,5,6,6}

s1 = {1,2,3,5}

集合數(shù)組互轉(zhuǎn)

# print(list(set(l)))?

# s.add(5)#添加元素

# s.update({7,8,9})

集合add、update的區(qū)別

1、從可添加的元素來說,add只可添加不可變的元素,如數(shù)字,元組,字符串,否則會(huì)報(bào)錯(cuò),而update()可以添加字符串、列表、元組、字典等可迭代的元素,若添加數(shù)字類型,也會(huì)報(bào)錯(cuò)。

update()不可添加數(shù)字

2、從添加的結(jié)果來看,add是把元素整體性的添加進(jìn)去,update()會(huì)把元素拆分之后再添加進(jìn)去

s2 = {7,8}

s2.add('123')#添加元素

s2.update('123')

print(s2)


分別add,update一個(gè)字符串123,輸出結(jié)果

s.pop()????????刪除第一個(gè)元素?

交集、并集、差集

print(s.intersection(s1))#交集

print(s & s1)

print(s.union(s1).union(s2))#并集

print(s | s1 | s2)

print(s.difference(s1))#差集,前邊集合有,但是后邊集合里邊沒有的元素的集合,具有局限性,只能s的元素?cái)?shù)大于s1,否則輸出空集合set()

print(s - s1)

# print(s.symmetric_difference(s1))# 對(duì)稱差集? 交集之外的元素,對(duì)于元素個(gè)數(shù)沒有要求,都會(huì)輸出差集。

# print(s ^ s1)

# for i in l:

#? ? if i %2 != 0:

#? ? ? ? l.remove(i)

#? ? ? ? print(l)

list1 = l

# l.clear()

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

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

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