跟老齊學(xué)python之list和str比較
來源:易賢網(wǎng) 閱讀:767 次 日期:2016-06-14 10:06:11
溫馨提示:易賢網(wǎng)小編為您整理了“跟老齊學(xué)python之list和str比較”,方便廣大網(wǎng)友查閱!

相同點(diǎn)

都屬于序列類型的數(shù)據(jù)

所謂序列類型的數(shù)據(jù),就是說它的每一個(gè)元素都可以通過指定一個(gè)編號(hào),行話叫做“偏移量”的方式得到,而要想一次得到多個(gè)元素,可以使用切片。偏移量從0開始,總元素?cái)?shù)減1結(jié)束。

例如:

?1234567891011121314151617181920212223 >>> welcome_str = welcome you>>> welcome_str[0] 'w'>>> welcome_str[1] 'e'>>> welcome_str[len(welcome_str)-1] 'u'>>> welcome_str[:4] 'welc'>>> a = python>>> a*3'pythonpythonpython' >>> git_list = [qiwsir,github,io] >>> git_list[0] 'qiwsir'>>> git_list[len(git_list)-1] 'io'>>> git_list[0:2] ['qiwsir', 'github'] >>> b = ['qiwsir'] >>> b*7['qiwsir', 'qiwsir', 'qiwsir', 'qiwsir', 'qiwsir', 'qiwsir', 'qiwsir']

對(duì)于此類數(shù)據(jù),下面一些操作是類似的:

?123456789101112131415161718192021222324 >>> first = hello,world>>> welcome_str 'welcome you'>>> first+,+welcome_str #用+號(hào)連接str 'hello,world,welcome you'>>> welcome_str #原來的str沒有受到影響,即上面的+號(hào)連接后從新生成了一個(gè)字符串 'welcome you'>>> first 'hello,world' >>> language = ['python'] >>> git_list ['qiwsir', 'github', 'io'] >>> language + git_list #用+號(hào)連接list,得到一個(gè)新的list ['python', 'qiwsir', 'github', 'io'] >>> git_list ['qiwsir', 'github', 'io'] >>> language ['python'] >>> len(welcome_str) #得到字符數(shù) 11>>> len(git_list) #得到元素?cái)?shù) 3

區(qū)別

list和str的最大區(qū)別是:list是原處可以改變的,str則原處不可變。這個(gè)怎么理解呢?

首先看對(duì)list的這些操作,其特點(diǎn)是在原處將list進(jìn)行了修改:

?1234567891011121314151617181920212223 >>> git_list ['qiwsir', 'github', 'io'] >>> git_list.append(python) >>> git_list ['qiwsir', 'github', 'io', 'python'] >>> git_list[1] 'github'>>> git_list[1] = 'github.com'>>> git_list ['qiwsir', 'github.com', 'io', 'python'] >>> git_list.insert(1,algorithm) >>> git_list ['qiwsir', 'algorithm', 'github.com', 'io', 'python'] >>> git_list.pop() 'python' >>> del git_list[1] >>> git_list ['qiwsir', 'github.com', 'io']

以上這些操作,如果用在str上,都會(huì)報(bào)錯(cuò),比如:

?1234567891011121314151617 >>> welcome_str 'welcome you' >>> welcome_str[1] = 'e'traceback (most recent call last): file <stdin>, line 1, in <module> typeerror: 'str' object does not support item assignment >>> del welcome_str[1] traceback (most recent call last): file <stdin>, line 1, in <module> typeerror: 'str' object doesn't support item deletion >>> welcome_str.append(e) traceback (most recent call last): file <stdin>, line 1, in <module> attributeerror: 'str' object has no attribute 'append'

如果要修改一個(gè)str,不得不這樣。

?123456 >>> welcome_str 'welcome you'>>> welcome_str[0] + e + welcome_str[2:] #從新生成一個(gè)str 'welcome you'>>> welcome_str #對(duì)原來的沒有任何影響 'welcome you'

其實(shí),在這種做法中,相當(dāng)于從新生成了一個(gè)str。

多維list

這個(gè)也應(yīng)該算是兩者的區(qū)別了,雖然有點(diǎn)牽強(qiáng)。在str中,里面的每個(gè)元素只能是字符,在list中,元素可以是任何類型的數(shù)據(jù)。前面見的多是數(shù)字或者字符,其實(shí)還可以這樣:

?1234567891011 >>> matrix = [[1,2,3],[4,5,6],[7,8,9]] >>> matrix = [[1,2,3],[4,5,6],[7,8,9]] >>> matrix[0][1] 2>>> mult = [[1,2,3],['a','b','c'],'d','e'] >>> mult [[1, 2, 3], ['a', 'b', 'c'], 'd', 'e'] >>> mult[1][1] 'b'>>> mult[2] 'd'

以上顯示了多維list以及訪問方式。在多維的情況下,里面的list也跟一個(gè)前面元素一樣對(duì)待。

list和str轉(zhuǎn)化

str.split()

這個(gè)內(nèi)置函數(shù)實(shí)現(xiàn)的是將str轉(zhuǎn)化為list。其中str=是分隔符。

在看例子之前,請(qǐng)看官在交互模式下做如下操作:

>>>help(str.split)

得到了對(duì)這個(gè)內(nèi)置函數(shù)的完整說明。特別強(qiáng)調(diào):這是一種非常好的學(xué)習(xí)方法

?123 split(...) s.split([sep [,maxsplit]]) -> list of strings return a list of the words in the string s, using sep as the delimiter string. if maxsplit is given, at most maxsplit splits are done. if sep is not specified or is none, any whitespace string is a separator and empty strings are removed from the result.

不管是否看懂上面這段話,都可以看例子。還是希望看官能夠理解上面的內(nèi)容。

?123456789101112 >>> line = hello.i am qiwsir.welcome you. >>> line.split(.) #以英文的句點(diǎn)為分隔符,得到list ['hello', 'i am qiwsir', 'welcome you', ''] >>> line.split(.,1) #這個(gè)1,就是表達(dá)了上文中的:if maxsplit is given, at most maxsplit splits are done. ['hello', 'i am qiwsir.welcome you.'] >>> name = albert ainstain #也有可能用空格來做為分隔符 >>> name.split( ) ['albert', 'ainstain'] [sep].join(list)

join可以說是split的逆運(yùn)算,舉例:

?12345678 >>> name ['albert', 'ainstain'] >>> .join(name) #將list中的元素連接起來,但是沒有連接符,表示一個(gè)一個(gè)緊鄰著 'albertainstain'>>> ..join(name) #以英文的句點(diǎn)做為連接分隔符 'albert.ainstain'>>> .join(name) #以空格做為連接的分隔符 'albert ainstain'

更多信息請(qǐng)查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:跟老齊學(xué)python之list和str比較
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)