003_python的str切片,str常用操作方法,for循環(huán),集合,深淺copy

基礎(chǔ)數(shù)據(jù)類型

基礎(chǔ)數(shù)據(jù)類型,有7種類型,存在即合理。

1.int 整數(shù)
主要是做運(yùn)算的 。比如加減乘除,冪,取余 + - * / ** %...

2.bool布爾值
判斷真假以及作為條件變量

3.str 字符串
存儲(chǔ)少量的數(shù)據(jù)?!住?'password'... 操作簡(jiǎn)單,便于傳輸。

4.list 列表
[1,2,'alex',{name:'zhang'}]存放大量的數(shù)據(jù),大量的數(shù)據(jù)放到列表中便于操作

5.tuple 元組
也叫只讀列表。(1,2,'alex',{name:'zhang'}) 一些重要的數(shù)據(jù)或者不想被更改的數(shù)據(jù),使用元組

6.dict 字典
{‘name_list’:'[zhang,lisi]'},存儲(chǔ)關(guān)系型的數(shù)據(jù),查詢速度非???,二分查找。

7.set 集合
交集,并集,差集...

分別舉例
int整型


i = 4
#轉(zhuǎn)化成二進(jìn)制的最小位數(shù)
print(i.bit_length())
'''
1   0000 0001
1   0000 0010
3   0000 0011
4   0000 0100
'''

執(zhí)行輸出: 3

數(shù)據(jù)類型轉(zhuǎn)換:int --> str:n = str(1)
執(zhí)行輸出: 1

int --> bool:n = bool(1)

執(zhí)行輸出: True

str --> booln = bool('')

執(zhí)行輸出: False

空字符串是False,其他都是True

str 字符串索引與切片

先講索引
字符串是有序的,有索引的,索引從0開始,默認(rèn)取值是從左至右


s = 'python是最好的語言'
#取第一個(gè)字符
s1 = s[0]
#取索引值為2的元素
s2 = s[2]
#最后一個(gè)
s3 = s[-1]
print(s1)
print(s2)
print(s3)

執(zhí)行輸出:
p
t

切片
語法:
[起始索引:截止索引:步長(zhǎng)]
步長(zhǎng)默認(rèn)為1,表示從頭開始取
切片,也就是取連續(xù)的多個(gè)值

切片原則,顧頭不顧尾
什么意思?舉例說明


s = 'python是最好的語言'
s1 = s[0:2]
print(s1)

執(zhí)行輸出:
py

全取


s = 'python是最好的語言'
s1 = s[:]
print(s1)

執(zhí)行輸出:
python是最好的語言

切片會(huì)產(chǎn)生新的變量,在內(nèi)存中,原字符串和切片后的字符串,是2個(gè)變量s4 = s[:]雖然結(jié)果是一樣的,但它是2個(gè)變量

對(duì)字符串操作,都會(huì)產(chǎn)生新的變量,除了賦值以外。

取最后5個(gè)字符串


s = 'python是最好的語言'
s1 = s[-5:]
print(s1)

執(zhí)行輸出:
最好的語言

步長(zhǎng)
默認(rèn)步長(zhǎng)為1
隔一個(gè)取1個(gè),步長(zhǎng)為2
反向取值,也就是從后向前取,步長(zhǎng)為-1

隔1個(gè),取一個(gè)

s = 'python是最好的語言'
s1 = s[::2]
print(s1)

執(zhí)行輸出:
pto是好語

反向取5個(gè)


s = 'python是最好的語言'
s1 = s[:-5:-1]
print(s1)

執(zhí)行輸出:
言語的好

反向全取


s = 'python是最好的語言'
s1 = s[::-1]
print(s1)

執(zhí)行輸出:
言語的好最是nohtyp

字符串常用操作方法

capitalize() 首字母大寫,其他字母小寫


s = 'laoshi'
s1 = s.capitalize()
print(s1)

執(zhí)行輸出:
Laoshi

upper() 全部大寫、lower() 全部小寫


s = 'laoshi'
s1 = s.upper()
s2 = s.lower()
print(s1)
print(s2)

執(zhí)行輸出:
LAOSHI
laoshi

比如驗(yàn)證碼判斷功能


code = 'aeQu'
your_code = input('請(qǐng)輸入驗(yàn)證碼:')
if your_code == 'aequ' or your_code == 'Aequ'...

如果不使用字符串內(nèi)置方法,這需要寫16個(gè)if,代碼質(zhì)量非常low
下面使用字符串內(nèi)置方法


code = 'aeQu'
your_code = input('請(qǐng)輸入驗(yàn)證碼:')
if your_code.upper() == code.upper():
    print('驗(yàn)證碼驗(yàn)證成功')

執(zhí)行輸出:

驗(yàn)證成功

代碼優(yōu)化一下


code = 'aeQu'.upper()
your_code = input('請(qǐng)輸入驗(yàn)證碼:').upper()
if your_code == code:
    print('驗(yàn)證碼驗(yàn)證成功')

center() 居中


s = 'laoshi'
#總寬度為30,并且字符串居中,不足30,默認(rèn)用空格填充
s1 = s.center(30)
#使用*填充
s2 = s.center(30,'*')
print(s1)
print(s2)

執(zhí)行輸出:

執(zhí)行輸出

如果寬度小于字符串,按照原來的字符串顯示


s = 'laoshi'
s1 = s.center(3)
print(s1)

執(zhí)行輸出:
laoshi

swapcase() 大小寫反轉(zhuǎn)


s = 'LaoShi'
s1 = s.swapcase()
print(s1)

執(zhí)行輸出:
lAOsHI

title() 每個(gè)單詞的首字母大寫(非字母隔開)


s = 'xiao wusir*nanhai21shui'
s1 = s.title()
print(s1)

執(zhí)行輸出:Xiao Wusir*Nanhai21Shui

startswith() 判斷以什么為開頭,endswith() 以什么為結(jié)尾

startswith 的start和end參數(shù)是切片如果想取到最后,end參數(shù),不需要指定。


s = 'xiao wusir*nanhai21shui'
s1 = s.startswith('a')
s2 = s.endswith('i')
#切片,取索引訪問1~4,再判斷是否以i開頭
s3 = s.startswith('i',1,4)
#切片,取索引范圍5~結(jié)束,結(jié)束位置參數(shù)沒給,默認(rèn)一直取到尾
s4 = s.startswith('w',5)
print(s1)
print(s2)
print(s3)
print(s4)

執(zhí)行輸出:
False
True
True
True

strip() 去除首尾的空格,換行符(\n),tab鍵(4個(gè)空格 用\t表示)


s = '\nlaoshi\t '
s1 = s.strip()
print(s1)

執(zhí)行輸出: laoshi

在input程序中,會(huì)經(jīng)常使用


name = input('請(qǐng)輸入用戶名:')
if name == 'xiao':
    print('ok')

如果用戶輸入的,不小心包含了空格,會(huì)導(dǎo)致驗(yàn)證失敗

下面加入strip()
即使輸入有空格,也可以驗(yàn)證通過


name = input('請(qǐng)輸入用戶名:').strip()
if name == 'xiao':
    print('ok')

執(zhí)行輸出:


輸入用戶名

后續(xù)操作文件讀取一行內(nèi)容的時(shí)候,也會(huì)帶有換行符,雖然你看不見,使用strip(),就可以去除了類似功能的2個(gè)的方法

lstrip() 去除左邊的空格、換行符、tab鍵
rstrip() 去除右邊的空格、換行符、tab鍵

strip()還可以去除指定的字符串


s = 'laoshijintianzalill'
#去除字符串l
s1 = s.strip('l')
print(s1)

執(zhí)行輸出:aoshijintianzali

解釋一下執(zhí)行過程 ?→ string ← ?

strip()相當(dāng)于 ?,就像吃豆游戲一樣。

strip()會(huì)同時(shí)向左右2邊,挨個(gè)挨個(gè)字符尋找字符串l 如果發(fā)現(xiàn)了l,就去除,如果沒有發(fā)現(xiàn),終止尋找,最后輸入結(jié)果比如頭部的lao 找到了字符串l,開始刪除。再繼續(xù)找下一個(gè)字符a,發(fā)現(xiàn)不匹配,終止尋找同時(shí),尾部的lill,找到l,開始刪除。繼續(xù)找下一個(gè),找到l,刪除。再繼續(xù)下一個(gè),發(fā)現(xiàn)字符串i,不匹配,終止尋找最終輸出: aoshijintianzali

find()通過元素找索引

還有一個(gè)函數(shù)index(),也是同樣的功能不同的是,index()找不到,直接報(bào)錯(cuò)find()找不到時(shí),會(huì)返回-1


s = 'xiaoxx'
s1 = s.find('a')
s2 = s.index('a')
print(s1)
print(s2)

執(zhí)行輸出: 2

count()尋找元素出現(xiàn)的個(gè)數(shù),可切片


s = 'xiaomingtongxue'
s1 = s.count('x')
#從第5個(gè)索引一直到最后,尋找字符串o出現(xiàn)的次數(shù)
s2 = s.count('o',5)
print(s1)
print(s2)

執(zhí)行輸出:
2
1

replace() 替換


s = '我的老家在東北,東北有很多人'
#默認(rèn)是全文替換
s1 = s.replace('東北','黑龍江')
#替換一次
s2 = s.replace('東北','黑龍江',1)
print(s1)
print(s2)

執(zhí)行輸出:
我的老家在黑龍江,黑龍江有很多人
我的老家在黑龍江,東北有很多人

替換,是從左至右的
如果想要替換中間某部分,需要用到正則表達(dá)式

split() 分割,將字符串轉(zhuǎn)換為列表,默認(rèn)按照空格分隔:


s = 'wo zai tai bei'
s1 = s.split()
print(s1)

執(zhí)行輸出:['wo', 'zai', 'tai', 'bei']

指定分割符


s = 'wo,zai,tai,bei'
s1 = s.split()
print(s1)

執(zhí)行輸出,效果同上

指定字符串a(chǎn)


s = 'awozaiataiabei'
s1 = s.split('a')
print(s1)

執(zhí)行輸出:
['', 'woz', 'i', 't', 'i', 'bei']

注意:如果關(guān)鍵字左邊沒有字符串,那么結(jié)果為[],也就是空字符串

結(jié)果不包含關(guān)鍵字,被剔除了

比如面試題:

有下面一段日志,包含了IP地址和時(shí)間...需要切割日志

216.244.66.227,[20/Mar/2018:17:03:52 +0800],"Mozilla/5.0"


114.215.45.101,[20/Mar/2018:17:16:30 +0800],"BUbiNG"

106.11.152.107,[20/Mar/2018:17:22:40
+0800],"YisouSpider"

可以用正則表達(dá)式,但是比較麻煩,有沒有更簡(jiǎn)單的辦法呢?用split(),指定逗號(hào)分割,就可以實(shí)現(xiàn)

format() 格式化輸出這個(gè)很牛逼,一定要重點(diǎn)掌握!有三種用法:

第一種用法:


s = '我叫{},今年{},愛好{}'.format('MT',18,'打怪')
print(s)

執(zhí)行輸出:
我叫MT,今年18,愛好打怪

{}表示一個(gè)占位符

isalnum() 字符串由字母或數(shù)字組成
isalpha() 字符串只能由字母組成
isdigit()字符串只能由數(shù)字組成


name = 'jingsan123'
s1 = name.isalnum()
s2 = name.isalpha()
s3 = name.isdigit()
print(s1)
print(s2)
print(s3)

執(zhí)行輸出:
True
False
False

isdigit()比較常用,比如判斷用戶輸入的,是否是數(shù)字。

或者將字符串轉(zhuǎn)換為數(shù)字類型時(shí),要判斷字符串是否由純數(shù)字組成,否則報(bào)錯(cuò)。


name = '123a'
if name.isdigit():
    name = int(name)
else:
    print('您輸入的含有非數(shù)字元素')

執(zhí)行輸出:
您輸入的含有非數(shù)字元素

len() 查看數(shù)據(jù)的長(zhǎng)度


name = 'zhangsan'
print(len(name))

執(zhí)行輸出: 8

for循環(huán)

先來使用while循環(huán),打印每一個(gè)字符串


s = 'abcdef'
count = 0
while count < len(s):
    print(s[count])
    count += 1

執(zhí)行輸出:
a
b
c
d
e
f

使用for循環(huán)完成上面的功能

s = 'abcdef'
for i in s:
    print(i)

執(zhí)行程序,效果同上

for循環(huán)和while循環(huán)的區(qū)別在于
for 循環(huán)是有限循環(huán)
while 循環(huán)是無限循環(huán)

有些情況,在不需要終止條件的情況下,使用for循環(huán)
有終止條件的,使用while循環(huán)

for循環(huán)會(huì)自動(dòng)停止 使用for循環(huán)實(shí)現(xiàn)九九乘法表:


for i in range(1, 10):
    for j in range(1, i + 1):
        print('{}x{}={}\t'.format(j, i, i * j), end='')
    print('\n')

執(zhí)行輸出:


1x1=1  
 
1x2=2   2x2=4  
 
1x3=3   2x3=6   3x3=9  
 
1x4=4   2x4=8   3x4=12  4x4=16 
 
1x5=5   2x5=10  3x5=15  4x5=20  5x5=25 
 
1x6=6   2x6=12  3x6=18  4x6=24  5x6=30  6x6=36 
 
1x7=7   2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49 
 
1x8=8   2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64 
 
1x9=9   2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81

作業(yè)

有變量name = "aleX leNb" 完成如下操作:

  1. 移除name變量對(duì)應(yīng)的值兩邊的空格,并輸出處理結(jié)果
  2. 移除name變量左邊的'al'并輸出處理結(jié)果
  3. 移除name變量右面的'Nb',并輸出處理結(jié)果
  4. 移除name變量開頭的a'與最后的'b',并輸出處理結(jié)果

name = "aleX leNb"
s1 = name.strip()
s2 = name.lstrip('al')
s3 = name.rstrip('Nb')
s4 = name.lstrip('a').rstrip('b')
print(s1)
print(s2)
print(s3)
print(s4)

  1. 判斷 name 變量是否以 "al" 開頭,并輸出結(jié)果
  2. 判斷name變量是否以"Nb"結(jié)尾,并輸出結(jié)果

s5 = name.startswith('al')
s6 = name.endswith('Nb')
print(s5)
print(s6)

  1. 將name變量對(duì)應(yīng)的值中的 所有的"l" 替換為 "p",并輸出結(jié)果
  2. 將name變量對(duì)應(yīng)的值中的第一個(gè)'l'替換成'p',并輸出結(jié)果

s7 = name.replace('l','p')
s8 = name.replace('1','p',1)
print(s7)
print(s8)

  1. 將 name 變量對(duì)應(yīng)的值根據(jù) 所有的"l" 分割,并輸出結(jié)果。
  2. 將name變量對(duì)應(yīng)的值根據(jù)第一個(gè)'l'分割,并輸出結(jié)果。

s9 = name.split('l')
s10 = name.split('l',1)
print(s9)
print(s10)

  1. 將 name 變量對(duì)應(yīng)的值變大寫,并輸出結(jié)果
  2. 將 name 變量對(duì)應(yīng)的值變小寫,并輸出結(jié)果

s11 = name.upper()
s12 = name.lower()
print(s11)
print(s12)

  1. 將name變量對(duì)應(yīng)的值首字母'a'大寫,并輸出結(jié)果
  2. 判斷name變量對(duì)應(yīng)的值字母'l'出現(xiàn)幾次,并輸出結(jié)果
  3. 如果判斷name變量對(duì)應(yīng)的值前四位'l'出現(xiàn)幾次,并輸出結(jié)果

s13 = name.capitalize()
s14 = name.count('l')
s15 = name.count('l',4)
print(s13)
print(s14)
print(s15)

  1. 從name變量對(duì)應(yīng)的值中找到'N'對(duì)應(yīng)的索引(如果找不到則報(bào)錯(cuò)),并輸出結(jié)果
  2. 從name變量對(duì)應(yīng)的值中找到'N'對(duì)應(yīng)的索引(如果找不到則返回-1)輸出結(jié)果
  3. 從name變量對(duì)應(yīng)的值中找到'X le'對(duì)應(yīng)的索引,并輸出結(jié)果

s16 = name.index('N')
s17 = name.find('N')
s18 = name.find('X le')
print(s16)
print(s17)
print(s18)

  1. 請(qǐng)輸出 name 變量對(duì)應(yīng)的值的第 2 個(gè)字符?
  2. 請(qǐng)輸出 name 變量對(duì)應(yīng)的值的前 3 個(gè)字符?
  3. 請(qǐng)輸出 name 變量對(duì)應(yīng)的值的后 2 個(gè)字符?
  4. 請(qǐng)輸出 name 變量對(duì)應(yīng)的值中 "e" 所在索引位置?

s19 = name[2]
s20 = name[:3]
s21 = name[-2:]
s22 = name.find('e')
s23 = name[:-1:]
print(s19)
print(s20)
print(s21)
print(s22)

23)獲取子序列,去掉最后一個(gè)字符。如: oldboy 則獲取 oldbo。


name = "oldboay"
#使用split對(duì)最后一個(gè)字符分割,并取第一個(gè)元素
s3 = name.split(name[-1])[0]
print(s3)


有字符串s = '123a4b5c'
1)通過對(duì)li列表的切片形成新的字符串s1,s1 = '123'
2)通過對(duì)li列表的切片形成新的字符串s2,s2 = 'a4b'
3)通過對(duì)li列表的切片形成新的字符串s3,s3 = '1345'
4)通過對(duì)li列表的切片形成字符串s4,s4 = '2ab'
5)通過對(duì)li列表的切片形成字符串s5,s5 = 'c'
6)通過對(duì)li列表的切片形成字符串s6,s6 = 'ba2'


s = '123a4b5c'
s1 = s[0:3]
s2 = s[3:6]
s3 = s[0]+s[2]+s[4]+s[6]
s4 = s[1]+s[3]+s[5]
s5 = s[-1]
s6 = s[5]+s[3]+s[1]
print(s1)
print(s2)
print(s3)
print(s4)
print(s5)
print(s6)


使用while和for循環(huán)分別打印字符串s='asdfer'中每個(gè)元素。


s = 'asdfer'
count = 0
while count < len(s):
    print(s[count])
    count += 1


實(shí)現(xiàn)一個(gè)整數(shù)加法計(jì)算器(兩個(gè)數(shù)相加):
如:content = input('請(qǐng)輸入內(nèi)容:') # 如用戶輸入:5+9或5+ 9或5 + 9,然后進(jìn)行分割再進(jìn)行計(jì)算。

content = input('請(qǐng)輸入內(nèi)容:')
num = content.split('+')
sum = 0
for i in num:
    sum += int(i)

print(sum)

計(jì)算用戶輸入的內(nèi)容中有幾個(gè)整數(shù)(以個(gè)位數(shù)為單位)。
如:content = input('請(qǐng)輸入內(nèi)容:') # 如fhdal234slfh98769fjdla

count = 0
content = input('請(qǐng)輸入內(nèi)容:')
for i in content:
    if i.isdigit():
        count += 1

print(count)

集合

集合是無序的,不重復(fù)的數(shù)據(jù)集合,它里面的元素是可哈希的(不可變類型),但是集合本身是不可哈希(所以集合做不了字典的鍵)的。以下是集合最重要的兩點(diǎn):

去重,把一個(gè)列表變成集合,就自動(dòng)去重了。

關(guān)系測(cè)試,測(cè)試兩組數(shù)據(jù)之前的交集、差集、并集等關(guān)系。

1.集合的創(chuàng)建


set1 = set({1,2,'barry'})
set2 = {1,2,'barry'}
print(set1,set2)

執(zhí)行輸出
{1, 2, 'barry'} {1, 2, 'barry'}

2.集合的增


set1 = {'alex','wusir','ritian','egon','barry'}
set1.add('景女神')
print(set1)
 
#update:迭代著增加
set1.update('A')
print(set1)
set1.update('老師')
print(set1)
set1.update([1,2,3])
print(set1)

執(zhí)行輸出:
{'wusir', 'egon', 'alex', 'ritian', 'barry', '景女神'}
{'wusir', 'A', 'egon', 'alex', 'ritian', 'barry', '景女神'}
{'老', 'wusir', 'A', 'egon', 'alex', 'ritian', 'barry', '師', '景女神'}
{'老', 'wusir', 1, 2, 3, 'A', 'egon', 'alex', 'ritian', 'barry', '師', '景女神'}

3.集合的刪


set1 = {'alex','wusir','ritian','egon','barry'}
 
set1.remove('alex') # 刪除一個(gè)元素
print(set1)
 
set1.pop() # 隨機(jī)刪除一個(gè)元素
print(set1)
 
 
set1.clear() # 清空集合
print(set1)
 
del set1 # 刪除集合

執(zhí)行輸出
{'ritian', 'wusir', 'egon', 'barry'}
{'wusir', 'egon', 'barry'}
set()

4.集合的其他操作:

交集。(& 或者 intersection)


set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2)
print(set1.intersection(set2))

執(zhí)行輸出:
{4, 5}
{4, 5}

并集。(| 或者 union)


set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2)
print(set2.union(set1))

執(zhí)行輸出
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}

差集。(- 或者 difference)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2)
print(set1.difference(set2)) 

執(zhí)行輸出
{1, 2, 3}
{1, 2, 3}

反交集。 (^ 或者 symmetric_difference)


set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2)
print(set1.symmetric_difference(set2))

執(zhí)行輸出
{1, 2, 3, 6, 7, 8}
{1, 2, 3, 6, 7, 8}

子集與超集


set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
 
print(set1 < set2)
print(set1.issubset(set2)) # 這兩個(gè)相同,都是說明set1是set2子集。
 
print(set2 > set1)
print(set2.issuperset(set1)) # 這兩個(gè)相同,都是說明set2是set1超集。

frozenset不可變集合,讓集合變成不可變類型。


s = frozenset('barry')
print(s,type(s))

執(zhí)行輸出

frozenset({'b', 'a', 'r', 'y'}) <class 'frozenset'>

深淺copy

1.先看賦值運(yùn)算


l1 = [1,2,3,['barry','alex']]
l2 = l1
 
l1[0] = 111
print(l1)
print(l2)
 
l1[3][0] = 'wusir'
print(l1)
print(l2)

執(zhí)行輸出:
[111, 2, 3, ['barry', 'alex']]
[111, 2, 3, ['barry', 'alex']]
[111, 2, 3, ['wusir', 'alex']]
[111, 2, 3, ['wusir', 'alex']]

對(duì)于賦值運(yùn)算來說,l1與l2指向的是同一個(gè)內(nèi)存地址,所以他們是完全一樣的。

2.淺拷貝copy


l1 = [1,2,3,['barry','alex']]
 
l2 = l1.copy()
print(l1,id(l1))
print(l2,id(l2))
l1[1] = 222
print(l1,id(l1))
print(l2,id(l2))
 
l1[3][0] = 'wusir'
print(l1,id(l1[3]))
print(l2,id(l2[3]))

執(zhí)行輸出
[1, 2, 3, ['barry', 'alex']] 2200143751176
[1, 2, 3, ['barry', 'alex']] 2200143750920
[1, 222, 3, ['barry', 'alex']] 2200143751176
[1, 2, 3, ['barry', 'alex']] 2200143750920
[1, 222, 3, ['wusir', 'alex']] 2200143749768
[1, 2, 3, ['wusir', 'alex']] 2200143749768

對(duì)于淺copy來說,第一層創(chuàng)建的是新的內(nèi)存地址,而從第二層開始,指向的都是同一個(gè)內(nèi)存地址,所以,對(duì)于第二層以及更深的層數(shù)來說,保持一致性。

3.深拷貝deepcopy


import copy
l1 = [1,2,3,['barry','alex']]
l2 = copy.deepcopy(l1)
 
print(l1,id(l1))
print(l2,id(l2))
 
l1[1] = 222
print(l1,id(l1))
print(l2,id(l2))
 
l1[3][0] = 'wusir'
print(l1,id(l1[3]))
print(l2,id(l2[3]))

執(zhí)行輸出
[1, 2, 3, ['barry', 'alex']] 1722671719688
[1, 2, 3, ['barry', 'alex']] 1722671719816
[1, 222, 3, ['barry', 'alex']] 1722671719688
[1, 2, 3, ['barry', 'alex']] 1722671719816
[1, 222, 3, ['wusir', 'alex']] 1722671720456
[1, 2, 3, ['barry', 'alex']] 1722671720200

對(duì)于深copy來說,兩個(gè)是完全獨(dú)立的,改變?nèi)我庖粋€(gè)的任何元素(無論多少層),另一個(gè)絕對(duì)不改變。

最后編輯于
?著作權(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ù)。

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