三、Python字符串、列表、元组、字典、集合的操作和内涵乱七八糟(持续更新)

 字符串

name ='sunhao sunholy'

字符串的索引

从第一个字符开始从0开始算索引号

print(name[0])

输出结果是s

print(name[-1])

输出结果是y

print(name[0:6]

输出结果是‘sunhao’(顾头不顾尾,包含index=0的字符,不包含index=6的字符)

字符串的切片

#逐一打印name中的字符 

for i in name:

  print(i)

字符串的常用方法

name ='sunhao sunholy'

print(name.capitalize())  # 首字母大写 输出'Sunhao sunholy'

print(name.upper())      #转换为大写

print(name.lower())      #转换成小写

print(name.count(‘s’))     # 字符串中字符的数量,输出 2

print(name.casefold())    # 不重要

print(name.center(50,"-"))   # 居中打印50个字符,不够的用-补上

print(name.encode())      # 将字符串转换成二进制

print(name.startswith("www")) #检测是不是以“www”开头

print(name.endswith(".com"))   # 检测是不是以“.com”结尾

print(name.expandtabs(tabsize=30))  # 文字中的TAB键转换成30个空格

print(name.find("y"))             #查询所在位置     13

-------------------------------------------------------------------------------------------------

name = 'my name is {name},i am {year} '

print(name.format(name = 'alex',year=23))              #my name is alex ,i am 23 

print(name.format_map({'name':'alex','year':12}))   #my name is alex ,i am 23 

-------------------------------------------------------------------------------------------------

print(name.index())

print(name.isalnum())        # 判断是否阿拉伯数字或字母(包含所有的英文字符)

print(name.isalpha())         # 判断是否英文字符(包含英文大写)

print(name.isdecimal())      # 判断是否十进制(用处不大)

print(name.isdigit())           # 判断是否是整数

print(name.isidentifier())     # 标识符-判断是不是一个合法的标识符(变量名)

print(name.isnumeric())      # 是否纯数字

print(name.isspace())          # 是不是空格

print(name.istitle())             # 是不是标题

print(name.isprintable())      # 是否可打印(ppy文件)

print(name.isupper())           # 是不是大写

print(name.join("=="))          # =sunhao sunholy=

列表

列表

names = ["Sunhao","Chenhui","Fanchuanyun","Zhangluoyin"]

 

列表查找:

names[0] = "Sunhao"

names[1:3] = ["Chenhui","Fanchuanyun"]      #顾头不顾尾(1-3包括1不包括3)

names[:3] =["Sunhao","Chenhui","Fanchuanyun"]  #取前三个

names[-1] = "Zhangluoyin"    #取最后一个值

names[-2] = "Fanchuanyun"   #取从后数第几个值

names[-3:-1] = ["Chenhui","Fanchuanyun"]  #顾头不顾尾,因此不包含“Zhangluoyin”

names[-3:] =["Chenhui","Fanchuanyun","Zhangluoyin"] #取倒数三个值

 

列表增加元素:

names.append("Liubo")  #添加一个元素到最后

names.insert(1,"Liubo")  #添加到下标为1的元素前面

names.insert(3,"Liubo")  #添加到下标为2的元素后面

 

列表更改元素:

names[2] = "Lihao"  #修改元素

 

列表删除元素:

names.remove("Fanchuanyun") #删除“Fanchuanyun”

names.remove(2) #删除下标为2的元素

names.pop(9) #删除最后一个元素(默认删除最后一个),输入下标和remove效果一样

names.clear()  #清空列表

del names[0] #按照索引号删除,也可以按照切片长度删除 eg: del names[0:2]

print(names)

 

列表元素下标

names.index("Sunhao") = 0

names[names.index("Sunhao") ] = "Sunhao"

 

统计人名个数

names = ["Sunhao","Chenhui","Fanchuanyun","Zhangluoyin","Sunhao"]

names.count("Sunhao") = 2

 

列表其他

names.reverse()  #反转列表

names.sort()  #排序 特殊字符<数字<大写字母<小写字母

names.extend(names2)   #将names2与name合并,且names2存在

del names2  #删除列表

 

复制(深浅copy)

cpoy()

names = ["Sunhao","Chenhui",["Fanchuanyun","Zhangluoyin"]]

names2 = names.copy()  

names2 = names  #浅copy,names改变则names2也改变,指向同一个内存地址(id方法即可判断是否是同一个内存地址,print(id(names2))

names2 = names.copy #深copy,names改变names2不变,指向两个不同的内存地址,但是没有改变的数据的内存地址和原来一样,只是改变了的数据不一样了。

------------------------------------------------------------------------------------------------------------------------

下面斜体的内容仅记录,因为经笔者验证,并不是这样的。。但是之前老师是这样讲的。。。所以斜体的这部分,是错的,先不管。

#names2 = ["Sunhao","Chenhui",["Fanchuanyun","Zhangluoyin"]]只复制第一层的地址,是浅copy(copy出来的表仍然与原表相关),第二层列表names更改了,names2也会更改。

import copy

names2 = copy.copy(names)     #浅copy

names2 = copy.deepcopy(names)   #深copy

---------------------------------------------------------------------------------------------------------------------------------------------

range

能生成特殊的列表

a = range(5)

表示从0开始,数5个数,即列表中有0,1,2,3,4

元组(了解就OK)

特殊的列表,不能修改元组的内容。

字典

字典:key-value

info = {

  '2008103215' : ["sunhao","23"],

  '2008103242' : "chenhui", 

  '2008103241' : "chengmou",

}

字典是无序的,key必须是唯一的。

-----------------------------------------------------------------------------------

查找

print(info["2008103215")    #["sunhao","23"]当2008103215不存在的时候报错

print(info.get("2008103215"))   #如果没有值就显示None

-----------------------------------------------------------------------------------

增加

info['2008103232'] = "zhangluoyin"

-----------------------------------------------------------------------------------

修改

info["2008103215"] = "孙皓"

-----------------------------------------------------------------------------------

删除:

del info       #删除整个字典

del info["2008103215"]    #删除key为2008103215的记录

info.pop("2008103215")   #删除key为2008103215的记录

info.popitem()                 #随机删除一条记录

-----------------------------------------------------------------------------------

判断一个key是否存在

print('2008103215' in info )      #True   Python2里:info.has_key("2008103215")

 

多级字典嵌套及操作

info["2008103215"][1] = 23  # 嵌套修改值

-----------------------------------------------------------------------------------

info.value()  #打印所有的值

info.key()     #打印所有的键

info.setdefault("2008103230",“范川云”)  #如果key存在则返回,如果不存在则录入“范川云”

-----------------------------------------------------------------------------------

b = {"2008103215":"雷延庆"

  1:2

  2:3

}

info.update(b) ={

  '2008103215' : “雷延庆”,

  '2008103242' : "chenhui", 

  '2008103241' : "chengmou",

  1:2

  2:3

}

-------------------------------------------------------------------------------

info.item()#将字典转换为列表

c = info.fromkeys([1,2,3],“test”)  #初始化一个新的字典

-------------------------------------------------------------------------------

字典的循环

方法一:for key in info:

      print(key,info[key])

方法二:for k,v in info.item():   #会先把字典转换成列表,数据量大时耗时

      print(k,v)

集合

集合的两个作用:

1.去重:

list_1 = [1,2,3,4,5,4,3,6,7,9]

list_1 = set(list_1)

print(list_1) = [1,2,3,4,5,6,7,9]

2.关系测试:

list_1 = set([1,2,3,4,5,6,7,9])

list_2 = set([2,3,5,6,7])

交集:

list_1.intersection(list_2)   #简写:list_1 & list_2

并集:

list_1.union(list_2)       #简写:list_1 | list_2  

差集:(我有你没有的)

list_1.difference(list_2)  #list_1里有的,list_2里没有的取出来  #简写:list_1-list_2

list_2.difference(list_1)  #list_2里有的,list_1里没有的取出来  #简写:list_2-list_1

 

对称差集:(两个集合互相没有的取出来求和)

print(list_1.symmetric_difference(list_2))  #简写:list_1 ^ list_2

子集:(判断是否子集)

print(list_1.issubset(list_2) )   #False

父集:(判断是否父集)

print(list_1.isupset(list_2) )     #True

 

判断是否有交集()

print(list_1.isdisjoint(list_2) )    #False(有交集输出False,没交集输出True)

 

集合的操作(增删改查):

添加:

list_1.add(999)         #单个添加

list_1.update([1,2,3,41,432,234,]) #批量操作

删除一项

list_1.remove(1)  #  不存在就报错(不建议使用)

list_1.pop()   #任意删除一个,并返回删除的数

list_1.discard()   #不存在也不会报错(建议使用)

长度:

len(list_1)

判断某元素是不是list_1的成员:

‘a’ in list_1    'a' not in list_1

 

你可能感兴趣的:(三、Python字符串、列表、元组、字典、集合的操作和内涵乱七八糟(持续更新))