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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字符串跟列表的恩怨、set集合、数据转换、深浅拷贝

發布時間:2024/1/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串跟列表的恩怨、set集合、数据转换、深浅拷贝 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、補充基礎數據類型的相關知識點:

  1、str.join() 把列表變成字符串

#1、字符串的插入 s = 'abc' s1 =s.join("張無忌") print(s1) #張abc無abc忌
#把列表變成字符串 ---> 如果要把字符串變成列表,把字符串變成列表就進行切片slipt() a
= ["張無忌","周芷若","趙敏"] b = "_".join(a) print(b) #張無忌_周芷若_趙敏
#把字典變成字符串 a
= {"碧瑤":"趙麗穎","王源":"張小凡","陸雪琪":"楊紫"} b = "*".join(a) print(b) #碧瑤*王源*陸雪琪

  2、列表不能在循環的時候刪除,因為索引會跟著改變

lis = ["張無忌","周芷若","趙敏","小昭"] # lis.clear() #一般使用clear可以清空列表,還可以使用其他方法 del_lis = [] for el in lis: #lis在循環的時候不能刪除,因為索引會變del_lis.append(el) #記錄要刪除的內容 for el in del_lis: #循環記錄原來的內容lis.remove(el) #刪除原來的內容 print(lis)--------------------------------------------------- 例: #刪除姓周的人 lis = ["周星馳","周樹人","張無忌","周芷若"] del_lis = [] for el in lis:if el.startswith(""):del_lis.append(el) for el in del_lis:lis.remove(el) print(lis)

  3、字典也不能直接循環刪除:(字典在循環的時候不能改變字典的大小)

      方法:要把刪除的內容記錄在列表中,循環列表,刪除原列表,字典中的數據

#除了白子畫,其他的都刪除 dic = {"花千骨":"趙麗穎","白子畫":"霍建華","殺阡陌":"馬可"} dic1 = {} for k,v in dic.items():if "" in k:dic1[k] = v dic = dic1 print(dic)


#刪除字典
dic = {"紫薇":"林心如","小燕子":"趙薇","五阿哥":"蘇有朋","皇阿瑪":"張鐵林","爾康":"周杰"}
lit = []
for el in dic:
lit.append(el) #將k添加新的列表中。
for el in lit:
dic.pop(el) #用字典刪除k值。
print(dic)

  4、formkeys() 不會對原來的字典產生影響。產生新的字典

a = dict.fromkeys(["張三豐","張無忌","周芷若"]," 趙敏") dic = {"a":"123"} print(dic) 結果:{'a': '123'} dict是一個類,dic是一個定義的變量 dic!=dicts = dic.fromkeys("楊逍","金毛獅王") print(s) 結果:{'': '金毛獅王', '': '金毛獅王'} #返回給一個新的字典

?二、set() 集合:

  1、特點:不重復,無序

  注意: set集合中的元素必須是可hash的, 但是set本?是不可hash得. set是可變的.

set1 = {'1','alex',2,True,[1,2,3]} # 報錯 set2 = {'1','alex',2,True,{1:2}} # 報錯 set3 = {'1','alex',2,True,(1,2,[2,3,4])} # 報錯#set中的元素是不重復的,且無序 s = {"張無忌","周芷若","周芷若"} print(s) #結果:{'周芷若', '張無忌'}

#使?用這個特性.我們可以使?用set來去掉重復
lis = ["趙麗穎","alex","張無忌","alex","趙麗穎"]
lis = set(lis)
print(lis)
#{'張無忌', 'alex', '趙麗穎'}

   2、set()的增刪改查

1、增 add() s = {"趙麗穎","張無忌","鹿晗"} s.add("楊紫") s.add("趙麗穎") #如果有重復的,不會再添加進去 print(s) #{'楊紫', '張無忌', '趙麗穎', '鹿晗'} update() s = {"趙麗穎","張無忌","鹿晗"} s.update("楊冪") print(s) #{'張無忌', '楊', '趙麗穎', '鹿晗', '冪'} 迭代更新2、刪 pop() s = {"趙麗穎","張無忌","鹿晗"} a = s.pop() #隨機刪除 print(a) #返回刪除的值 print(s)remove() s = {"趙麗穎","張無忌","鹿晗"} s.remove("張無忌") #刪除指定的值 print(s)clear() s = {"趙麗穎","張無忌","鹿晗"} s.clear() #清空set集合 print(s)3、改 # set集合中的數據沒有索引. 也沒有辦法去定位?個元素. 所以沒有辦法進行直接修改.我們可以采?先刪除后添加的?式來完成修改操作 s = {"趙麗穎","張無忌","鹿晗"} s.remove("張無忌") s.add("楊冪") print(s) #結果:{'楊冪', '趙麗穎', '鹿晗'}4、查 # set是?個可迭代對象. 所以可以進?for循環 s = {"趙麗穎","張無忌","鹿晗"} for el in s:print(el)

  3、set集合本?是可以發?改變的. 是不可hash的. 我們可以使?frozenset來保存數據. frozenset是不可變的. 也就是?個可哈希的數據類型

s = frozenset(["趙麗穎","張無忌","鹿晗"]) #凍結set,使set不可變 dic = {s:"123"} print(dic)
#結果:{frozenset({'趙麗穎', '張無忌', '鹿晗'}): '123'}

三、數據類型的轉換:

  想轉成什么就用什么括起來

  元組 => 列表 ? ? ?? list(tuple)

  列表 => 元組 ? ? ?? tuple(list)

  list=>str ?? str.join(list)

  str=>list ?? str.split()

  轉換成False的數據: 0,'',None,[],(),{},set() ==> False

四、深淺拷貝:

  1、直接賦值:兩個變量指向同一個對象。

對于list, set, dict來說, 直接賦值. 其實是把內存地址交給變量. 并不是復制?份內容. 所以. lst1的內存指向和lst2是?樣的. lst1改變了, lst2也發生了改變 lst1 = ["趙麗穎","楊冪","鹿晗","古力娜扎"] lst2 = lst1 print(lst1) print(lst2) lst1.append("林心如") print(lst1) print(lst2) #結果:['趙麗穎', '楊冪', '鹿晗', '古力娜扎']['趙麗穎', '楊冪', '鹿晗', '古力娜扎']['趙麗穎', '楊冪', '鹿晗', '古力娜扎', '林心如']['趙麗穎', '楊冪', '鹿晗', '古力娜扎', '林心如']dit1 = {"扶搖":"楊冪","無極太子":"阮經天"} dit2 = dit1 print(dit1) print(dit2) dit2["軒轅岳"] = "賴藝" print(dit1) print(dit2) #結果: {'扶搖': '楊冪', '無極太子': '阮經天'} {'扶搖': '楊冪', '無極太子': '阮經天'} {'扶搖': '楊冪', '無極太子': '阮經天', '軒轅岳': '賴藝'} {'扶搖': '楊冪', '無極太子': '阮經天', '軒轅岳': '賴藝'}

  2、淺拷貝:只拷貝第一層內容。方法:copy()? 、 [:]

lis = ["張無忌","周芷若","趙敏"] lis1 = lis.copy() #lis 和 lis1不是指向的同一個對象 # lis1 = lis[:] #切片產生新的對象 lis.append("小昭") print(lis) print(lis1) print(id(lis),id(lis1))結果: ['張無忌', '周芷若', '趙敏', '小昭'] ['張無忌', '周芷若', '趙敏'] 2795577984520 2795577985224
#兩個lst完全不不?樣. 內存地址和內容也不?樣. 發現實現了內存的拷?

lis = ["張無忌","周芷若","趙敏",["林心如","陳喬恩","董璇"]]
lis1 = lis.copy()
lis[3].append("樸信惠")
print(lis)
print(lis1)
print(id(lis),id(lis1))
結果:
['張無忌', '周芷若', '趙敏', ['林心如', '陳喬恩', '董璇', '樸信惠']]
['張無忌', '周芷若', '趙敏', ['林心如', '陳喬恩', '董璇', '樸信惠']]
1696216631496 1696216631624
#淺拷?. 只會拷?第?層. 第?層的內容不會拷?. 所以被稱為淺拷貝

  3、深拷貝:對象中的所有內容都會被拷貝一份 ?? 導入模塊import copy ?? 方法:deepcopy()

import copy lis = ["張無忌","周芷若","趙敏",["林心如","陳喬恩","董璇"]] lis1 = copy.deepcopy(lis) lis[3].append("宋慧喬") print(lis) print(lis1) print(id(lis),id(lis1)) #結果: ['張無忌', '周芷若', '趙敏', ['林心如', '陳喬恩', '董璇', '宋慧喬']] ['張無忌', '周芷若', '趙敏', ['林心如', '陳喬恩', '董璇'] 2041544733384 2041544734664都不?樣了. 深度拷?. 把元素內部的元素完全進行拷?復制. 不會產??個改變另?個跟著改變的問題

補充?個知識點: 最后我們來看?個?試題

a = [1,2] a[1] = a print(a[1]) 結果: [1, [...]]

?

轉載于:https://www.cnblogs.com/LW-5208/articles/9289197.html

總結

以上是生活随笔為你收集整理的字符串跟列表的恩怨、set集合、数据转换、深浅拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。

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