Heim Backend-Entwicklung Python-Tutorial 跟老齐学Python之list和str比较

跟老齐学Python之list和str比较

Jun 16, 2016 am 08:41 AM
list str 比较

相同点

都属于序列类型的数据

所谓序列类型的数据,就是说它的每一个元素都可以通过指定一个编号,行话叫做“偏移量”的方式得到,而要想一次得到多个元素,可以使用切片。偏移量从0开始,总元素数减1结束。

例如:

>>> 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']

Nach dem Login kopieren

对于此类数据,下面一些操作是类似的:

>>> first = "hello,world"
>>> welcome_str
'Welcome you'
>>> first+","+welcome_str  #用+号连接str
'hello,world,Welcome you'
>>> welcome_str       #原来的str没有受到影响,即上面的+号连接后从新生成了一个字符串
'Welcome you'
>>> first
'hello,world'

>>> language = ['python']
>>> git_list
['qiwsir', 'github', 'io']
>>> language + git_list   #用+号连接list,得到一个新的list
['python', 'qiwsir', 'github', 'io']
>>> git_list
['qiwsir', 'github', 'io']
>>> language
['python']

>>> len(welcome_str)  #得到字符数
11
>>> len(git_list)    #得到元素数
3

Nach dem Login kopieren

区别

list和str的最大区别是:list是原处可以改变的,str则原处不可变。这个怎么理解呢?

首先看对list的这些操作,其特点是在原处将list进行了修改:

>>> 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']

Nach dem Login kopieren

以上这些操作,如果用在str上,都会报错,比如:

>>> 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'

Nach dem Login kopieren

如果要修改一个str,不得不这样。

>>> welcome_str
'Welcome you'
>>> welcome_str[0] + "E" + welcome_str[2:] #从新生成一个str
'WElcome you'
>>> welcome_str             #对原来的没有任何影响
'Welcome you'
Nach dem Login kopieren

其实,在这种做法中,相当于从新生成了一个str。

多维list

这个也应该算是两者的区别了,虽然有点牵强。在str中,里面的每个元素只能是字符,在list中,元素可以是任何类型的数据。前面见的多是数字或者字符,其实还可以这样:

>>> 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'
Nach dem Login kopieren

以上显示了多维list以及访问方式。在多维的情况下,里面的list也跟一个前面元素一样对待。

list和str转化

str.split()

这个内置函数实现的是将str转化为list。其中str=""是分隔符。

在看例子之前,请看官在交互模式下做如下操作:

>>>help(str.split)
得到了对这个内置函数的完整说明。特别强调:这是一种非常好的学习方法

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.
Nach dem Login kopieren

不管是否看懂上面这段话,都可以看例子。还是希望看官能够理解上面的内容。

>>> line = "Hello.I am qiwsir.Welcome you." 

>>> line.split(".")   #以英文的句点为分隔符,得到list
['Hello', 'I am qiwsir', 'Welcome you', '']

>>> line.split(".",1)  #这个1,就是表达了上文中的: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)

Nach dem Login kopieren

join可以说是split的逆运算,举例:

>>> name
['Albert', 'Ainstain']
>>> "".join(name)    #将list中的元素连接起来,但是没有连接符,表示一个一个紧邻着
'AlbertAinstain'
>>> ".".join(name)   #以英文的句点做为连接分隔符
'Albert.Ainstain'
>>> " ".join(name)   #以空格做为连接的分隔符
'Albert Ainstain'
Nach dem Login kopieren

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie aktiviere ich die NFC-Funktion auf dem Xiaomi Mi 14 Pro? Wie aktiviere ich die NFC-Funktion auf dem Xiaomi Mi 14 Pro? Mar 19, 2024 pm 02:28 PM

Wie aktiviere ich die NFC-Funktion auf dem Xiaomi Mi 14 Pro?

Mar 18, 2024 pm 03:00 PM

So legen Sie den Zeilenabstand in WPS Word fest, um das Dokument übersichtlicher zu gestalten So legen Sie den Zeilenabstand in WPS Word fest, um das Dokument übersichtlicher zu gestalten Mar 20, 2024 pm 04:30 PM

So legen Sie den Zeilenabstand in WPS Word fest, um das Dokument übersichtlicher zu gestalten

CAD-Zeichnungen des iPhone 16 Pro werden angezeigt und eine zweite neue Schaltfläche hinzugefügt CAD-Zeichnungen des iPhone 16 Pro werden angezeigt und eine zweite neue Schaltfläche hinzugefügt Mar 09, 2024 pm 09:07 PM

CAD-Zeichnungen des iPhone 16 Pro werden angezeigt und eine zweite neue Schaltfläche hinzugefügt

Wie stelle ich einen benutzerdefinierten Klingelton auf dem Redmi K70E ein? Wie stelle ich einen benutzerdefinierten Klingelton auf dem Redmi K70E ein? Feb 24, 2024 am 10:00 AM

Wie stelle ich einen benutzerdefinierten Klingelton auf dem Redmi K70E ein?

Wie verwende ich die intelligente Bilderweiterung Xiaomi Mi 14 Ultra AI? Wie verwende ich die intelligente Bilderweiterung Xiaomi Mi 14 Ultra AI? Mar 16, 2024 pm 12:37 PM

Wie verwende ich die intelligente Bilderweiterung Xiaomi Mi 14 Ultra AI?

Vergleich und Analyse der Vor- und Nachteile der PHP7.2- und 5-Versionen Vergleich und Analyse der Vor- und Nachteile der PHP7.2- und 5-Versionen Feb 27, 2024 am 10:51 AM

Vergleich und Analyse der Vor- und Nachteile der PHP7.2- und 5-Versionen

Der Unterschied und die vergleichende Analyse zwischen C-Sprache und PHP Der Unterschied und die vergleichende Analyse zwischen C-Sprache und PHP Mar 20, 2024 am 08:54 AM

Der Unterschied und die vergleichende Analyse zwischen C-Sprache und PHP

See all articles