首页 > 代码库 > 字符串、元组、列表、字典、集合-数据类型篇

字符串、元组、列表、字典、集合-数据类型篇

本章内容

  1. 字符串
  2. 元组
  3. 列表
  4. 字典
  5. 集合

 

一、字符串

  字符串的使用需要用引号括起来,例如: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)来了解哦。

 

二、元组

三、列表

四、字典

五、集合

 

 

 

 持续更新。。。。。。

 

 

  

字符串、元组、列表、字典、集合-数据类型篇