相同点
都属于序列类型的数据
所谓序列类型的数据,就是说它的每一个元素都可以通过指定一个编号,行话叫做“偏移量”的方式得到,而要想一次得到多个元素,可以使用切片。偏移量从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 "<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'
如果要修改一个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》,后来由于图书出版,更名为《跟老齐学Python》。
本文向大家介绍跟老齐学Python之Python安装,包括了跟老齐学Python之Python安装的使用技巧和注意事项,需要的朋友参考一下 任何高级语言都是需要一个自己的编程环境的,这就好比写字一样,需要有纸和笔,在计算机上写东西,也需要有文字处理软件,比如各种名称的OFFICE。笔和纸以及office软件,就是写东西的硬件或软件,总之,那些文字只能写在那个上边,才能最后成为一篇文章。那么编程也是
本文向大家介绍跟老齐学Python之有容乃大的list(4),包括了跟老齐学Python之有容乃大的list(4)的使用技巧和注意事项,需要的朋友参考一下 list的话题的确不少,而且,在编程中,用途也非常多。 有看官可能要问了,如果要生成一个list,除了要把元素一个一个写上之外,有没有能够让计算机自己按照某个规律生成list的方法呢? 如果你提出了这个问题,充分说明你是一个“懒人”,不过这不是
本文向大家介绍跟老齐学Python之有容乃大的list(3),包括了跟老齐学Python之有容乃大的list(3)的使用技巧和注意事项,需要的朋友参考一下 对list的操作 向list中插入一个元素 前面有一个向list中追加元素的方法,那个追加是且只能是将新元素添加在list的最后一个。如: 从这个操作,就可以说明list是可以随时改变的。这种改变的含义只它的大小即所容纳元素的个数以及元素内容,
本文向大家介绍跟老齐学Python之有容乃大的list(1),包括了跟老齐学Python之有容乃大的list(1)的使用技巧和注意事项,需要的朋友参考一下 前面的学习中,我们已经知道了两种python的数据类型:int和str。再强调一下对数据类型的理解,这个世界是由数据组成的,数据可能是数字(注意,别搞混了,数字和数据是有区别的),也可能是文字、或者是声音、视频等。在python中(其它高级语言
本文向大家介绍跟老齐学Python之集合(set),包括了跟老齐学Python之集合(set)的使用技巧和注意事项,需要的朋友参考一下 回顾一下已经了解的数据类型:int/str/bool/list/dict/tuple 还真的不少了. 不过,python是一个发展的语言,没准以后还出别的呢.看官可能有疑问了,出了这么多的数据类型,我也记不住呀,特别是里面还有不少方法. 不要担心记不住,你只要记住
本文向大家介绍跟老齐学Python之Import 模块,包括了跟老齐学Python之Import 模块的使用技巧和注意事项,需要的朋友参考一下 认识模块 对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块)。为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义: 都是洋码子,翻译一下不?不!还是只说要点: •模块就是
本文向大家介绍跟老齐学Python之变量和参数,包括了跟老齐学Python之变量和参数的使用技巧和注意事项,需要的朋友参考一下 那么什么这两个到底有什么区别和联系呢?我在网上搜了一下,发现很多说法,虽然大同小异,但是似乎只有下面这一段来自微软网站的比较高度抽象,而且意义涵盖深远。我摘抄过来,看官读一读,是否理解,虽然是针对VB而言的,一样有启发。 看官如果硬着头皮看完这段引文,发现里面有几个关键词