资讯专栏INFORMATION COLUMN

[零基础学python]list和str比较

codergarden / 1111人阅读

摘要:和两种类型数据,有不少相似的地方,也有很大的区别。偏移量从开始,总元素数减结束。和转化这个内置函数实现的是将转化为。在看例子之前,请看官在交互模式下做如下操作得到了对这个内置函数的完整说明。

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

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

>>> 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
区别

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

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

>>> welcome_str
"Welcome you"

>>> welcome_str[1] = "E"
Traceback (most recent call last):
File "", line 1, in 
TypeError: "str" object does not support item assignment

>>> del welcome_str[1]
Traceback (most recent call last):
File "", line 1, in 
TypeError: "str" object doesn"t support item deletion

>>> welcome_str.append("E")
Traceback (most recent call last):
File "", line 1, in 
AttributeError: "str" object has no attribute "append"

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

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

其实,在这种做法中,相当于从新生成了一个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"

以上显示了多维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.

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

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

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

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

有朋友愿意学习python,恭请到我的github上follower我,并且可以给我发邮件,也可以在微博上关注我。更多有关信息请看:易水禾:http://qiwsir.github.io

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45290.html

相关文章

  • [基础Python]有点简约的元组

    摘要:关于元组,上一讲中涉及到了这个名词。元组是用圆括号括起来的,其中的元素之间用逗号隔开。使用而不是如同拥有一个隐含的语句,说明这一数据是常量。必须是不可变的。只有字符串整数或其它对安全的才可以用作。 关于元组,上一讲中涉及到了这个名词。本讲完整地讲述它。 先看一个例子: >>>#变量引用str >>> s = abc >>> s abc >>>#如果这样写,就会是... >>> t...

    leap_frog 评论0 收藏0
  • [基础python]难以想象的for

    摘要:看这个标题,有点匪夷所思吗为什么是难以想象的呢因为在中,它的确是很常用而且很强悍,强悍到以至于另外一个被称之为迭代的东西,在中就有点相形见绌了。然后将序列对应的元素依次组成元组,做为一个的元素。 看这个标题,有点匪夷所思吗?为什么for是难以想象的呢?因为在python中,它的确是很常用而且很强悍,强悍到以至于另外一个被称之为迭代的东西,在python中就有点相形见绌了。在别的语言中,...

    lwx12525 评论0 收藏0
  • [基础python]有容乃大的list(2)

    摘要:对的操作合并有容乃大的中,对的操作提到了,也就是将某个元素追加到已知的一个后边。如果的对象是数值型,则报错。依然是上一条官方解释是不是说的非常清楚明白了先到这里,下讲还继续有容乃大的 对list的操作 合并list 《有容乃大的list(1)》中,对list的操作提到了list.append(x),也就是将某个元素x 追加到已知的一个list后边。 除了将元素追加到list中,还...

    阿罗 评论0 收藏0
  • [基础python]有容乃大的list(1)

    摘要:定义在中,用方括号表示一个,在方括号里面,可以是,也可以是类型的数据,甚至也能够是这种布尔值。前面在对进行操作的时候,有一些内置函数,比如,这是去掉左右空格的内置函数,也是的方法。 前面的学习中,我们已经知道了两种python的数据类型:int和str。再强调一下对数据类型的理解,这个世界是由数据组成的,数据可能是数字(注意,别搞混了,数字和数据是有区别的),也可能是文字、或者是声音、...

    lewif 评论0 收藏0
  • [基础Python]字典,你还记得吗?

    摘要:字典,这个东西你现在还用吗随着网络的发展,用的人越来越少了。最早的名字叫伍记小字典,但未能编纂完成。新华字典由商务印书馆出版。成为迄今为止世界出版史上最高发行量的字典。也被称为关联数组或哈希表。 字典,这个东西你现在还用吗?随着网络的发展,用的人越来越少了。不少人习惯于在网上搜索,不仅有web版,乃至于已经有手机版的各种字典了。我曾经用过一本小小的《新华字典》。 《新华字典》是...

    galaxy_robot 评论0 收藏0

发表评论

0条评论

codergarden

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<