首页 > 代码库 > 字符串、元组、列表、字典、集合-数据类型篇
字符串、元组、列表、字典、集合-数据类型篇
本章内容
- 字符串
- 元组
- 列表
- 字典
- 集合
一、字符串
字符串的使用需要用引号括起来,例如:name = "Lyon";这里name就是一个变量名,而引号里面的 Lyon 则就是变量,该值的类型为 " str" 类型。这就是字符串!
当然如上使用的是双引号,这里其实还可以使用单引号 “ ‘Lyon‘ ” 以及三引号 “ ‘‘‘Lyon‘‘‘ ” (或者是"""Lyon""",单引号双引号都可以)。不过对于三引号,我们通常是表示多行字符串,这样我们就不需要利用 " \n " (换行符)来进行每一行的换行了。
字符串操作:这是一个重点,对于字符串操作我们应该熟练的掌握。
字符串操作有哪些呢?主要有 拷贝(复制)、拼接、查找、比较、统计、切片、测试、大小写等。我们需要掌握一些比较重要的,当然其他的就自己去学习吧!
在开始详细了解这些操作之前,我们需要记住一个性质:字符串是不可变的,不可变啊不可变!那么你就会问了,既然不可变那么下面的操作是 玩捏?放风筝捏?想知道?操作都掌握了在告诉你。
1.拷贝(复制)
1 >>> a = "Lyon" 2 >>> b = a 3 >>> print(a,b) 4 Lyon Lyon
2.拼接
1 >>> a = "Hello" 2 >>> b = "Lyon" 3 >>> print(a+b) 4 HelloLyon
注:这个方法要特别说明一下,“+”是一个坑,因为使用加号连接2个字符串会调用静态函数string_concat(register PyStringObject *a,register PyObject *b),这个函数大致的作用呢,就是首先开辟一块a+b大小的内存的和的存储单元,然后把a和b都拷贝进去。一个“+”就是一次啊!那n个字符串拼接,那就是n-1次啊!你想想这玩意在你电脑里面做这些无聊的事情还占你内存,要是我上去就是一大嘴巴子!
1 >>> a = "Lyon" 2 >>> b = "Hello" 3 >>> print(a.join(b)) 4 HLyoneLyonlLyonlLyono #HLyon eLyon lLyon lLyon o
注:.join():连接2个字符串,可以指定连接符号(符号?你把"Hello"改成“****”(符号)自己试试)
3.查找
1 >>> name = "Lyon" 2 >>> name.index(‘L‘) #"L"在"Lyon"的第几个?答案是第一个! 3 0 #那他怎么返回0?因为0就是第一个,以0开始,列表里我们还能再见! 4 >>> name.index(‘N‘) #如果name里面没有就会报错 5 Traceback (most recent call last): 6 File "<stdin>", line 1, in <module> 7 ValueError: substring not found #自己翻译一下,要学会看错误。 8 >>> name.find(‘L‘) #检测name里面有没有"L"啊,有就返回index同样从0开始 9 0 10 >>> name.find(‘N‘) #检测name里面有没有"N"啊,没有就返回-1 11 -1
4.比较
本来呢,python中有个str.cmp方法来比较两个对象,并根据结果返回一个整数。整数的征服就是数值的大小了。但是在python3中就没有这个方法了,官方文档如下:
The cmp() function should be treated as gone, and the __cmp__() special method is no longer supported. Use __lt__() for sorting, __eq__() with __hash__(), and other rich comparisons as needed. (If you really need the cmp() functionality, you could use the expression (a > b) - (a < b) as the equivalent for cmp(a, b).)
大致的意思呢就是cmp()函数已经走了,如果你真的需要cmp函数,你可以用表达式(a>b)-(a<b)代替cmp(a,b),看下面2.7的代码:
1 >>> a = "100" 2 >>> b = "50" 3 >>> cmp(a,b) #a>b 负数 4 -1 5 >>> cmp(b,a) #b<a 正数 6 1
在python3中呢,你还可以吧字符串转换成数字再来进行比较哦。
5.统计
1 >>> name = "Lyon" 2 >>> name.count("L") #name中"L"的个数 3 1
6.切片
1 >>> name = "i like Lyon" 2 >>> name[7:10] #不包括10哦 3 ‘Lyo‘ 4 >>> name = "i like Lyon" 5 >>> name[7:11] 6 ‘Lyon‘
注:对于切片的问题啊,这里不多讲,到列表再详细的讲,因为啊,列表里面也有切片,而且跟字符串是一样的用法哦。而且切片博大精深!
7.检测
1 >>> name = "Lyon" 2 >>> "L" in name #检测"L"是否在name中,返回bool值 3 True 4 >>> num = "3412313" 5 >>> num.isdigit() #检测num里面是否全都是整数(浮点数都不行) 6 True 7 >>> name = "Lyon" 8 >>> name.isidentifier() #检测name是否可以被当作标标志符,即是否符合变量命名规则 9 True
还有以下方法哦,就不一一举例了。
1 S.startswith(prefix[,start[,end]]) #是否以prefix开头 2 S.endswith(suffix[,start[,end]]) #以suffix结尾 3 S.isalnum() #是否全是字母和数字,并至少有一个字符 4 S.isalpha() #是否全是字母,并至少有一个字符 5 S.isdigit() #是否全是数字,并至少有一个字符 6 S.isspace() #是否全是空白字符,并至少有一个字符 7 S.islower() #S中的字母是否全是小写 8 S.isupper() #S中的字母是否便是大写 9 S.istitle() #S是否是首字母大写的
注:结果全是bool值哟。
8.大小写
1 >>> name = "I am Lyon" 2 >>> name.swapcase() #大小写互换 3 ‘i AM lYON‘ 4 >>> name.capitalize() #首字母大写,其它都小写 5 ‘I am lyon‘ 6 >>> name.upper() #转换为大写 7 ‘I AM LYON‘ 8 >>> name.lower() #转换为小写 9 ‘i am lyon‘
9.更多
1 str.ljust(width,[fillchar]) #输出width个字符,str左对齐,不足部分用fillchar填充,默认的为空格。 2 3 str.rjust(width,[fillchar]) #右对齐 4 5 str.center(width, [fillchar]) #中间对齐 6 7 str.zfill(width) #把str变成width长,并在右对齐,不足部分用0补足 8 9 str.replace(oldstr, newstr, [count]) #把str中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换 10 11 str.strip([chars]) #把str中前后chars中有的字符全部去掉,可以理解为把str前后chars替换为None 12 13 str.lstrip([chars]) #把str前面的去掉 14 15 str.rstrip([chars]) #把str后面的去掉 16 17 str.expandtabs([tabsize]) #把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个 18 19 str.split([sep, [maxsplit]]) #以sep为分隔符,把str分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符 20 21 22 str.splitlines([keepends]) #把str按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。 23 str.maketrans(from, to) #返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。 24 25 str.translate(table[,deletechars]) # 使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果str为unicode字符串,那么就不支持 deletechars参数,可以使用把某个字符翻译为None的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译表。
更多方法可以通过help(str)来了解哦。
二、元组
三、列表
四、字典
五、集合
持续更新。。。。。。
字符串、元组、列表、字典、集合-数据类型篇