python基础知识之列表、元祖、字典、集合、字符串。

时间:2024-01-02 12:02:08

1.可变类型之列表

列表用 [ ]来定义是可变的,可以通过索引值来去查询里面的字段可以可以追加,删除等


names='zhangyang guyun xiangpeng xuliangwei'
names = ['zhang', 'zhuang', 'chen', 'qiang']
name_list = [['zhang', 'zhuang'], ['chen', 'qiang']]
list_num = [1, 4, 5, 2, 3, 4, 52, 54]
print(len(names)) # 获取列表长度 print("aaffaa".count("a")) # 获取a在字符串出现的次数 print(names[1:3]) # 切片 print(names[-1]) # 获取最后一个元素
print(names[-2:]) #
names.append('qianqq') # 追加 names.insert(1, 'chengrouhua') # 插入
names.insert(3, "xinzhiyu")
names[2] = "ixnixn" # 修改
names.remove("qiang")
del names[0]
names.pop(0) # 删除元素 并返回删除的元素的值 可以加索引 删除指点的值 不加则删除最后一个
del names[2:4] # 切片删除 names.sort() # 排序->对原有列表排序 么有返回值 (元素是数字,字符等 ,里面的元素必须一致)
print(sorted(list_num, reverse=True)) # 这个有返回值 不改变原有列表的值 key对应排序规则
print(list_num) for i in names:
print(i) # 循环遍历列表 for i in range(1, 10, 2):
print(i) print(names[::2]) # 隔行筛选 print('zhuang' in names) # 判断字段是否在列表里 name1 = ["wutenglan","sanglaoshi"]
name2 = ["bojie","xize"] name = name1.extend(name2) # 将name2 并到name1中 names2 = names.copy() # 浅浅的copy print(dir(names)) # 获取列表所支持的方法

2.不可变类型元素

元祖,是一种不可 变得列表形式,一旦定义则不可以改变,一般用于数据库的连接,绑定 IP跟端口使用。

元祖特性:
1.不可变,定义元祖 的时候如果只有一个元素这样必须在元祖后面加逗号加以区分。注:元祖内部如果有列表等可变元素则可以修改 2.只有查询功能。通过索引值查询内部数据

3.可变类型字典

字典有如下特点:

1.key-value格式,key是唯一的
2.无序的
3.查询速度快

info={
'stu1101':"wu teng lang",
'stu1102':"cang",
'stu1103':"xiaoze",
'stu1104':"bo jie"
}
b={1:2,3:4} print(info['stu1101']) #查看字典stu1101 的键对应的value info['stu1101']='mmmmm' #如果字典有这个key值则修改,没有则添加
info['stu1105']='sssss' info.setdefault('stu1101','alxe') #如果key的值 在字典里则修改,没有则添加 info.update(b)# 在info字典后面追加B字典的字段,如果重复的更新跟字段。 info.pop('stu1105') #通过key的值来删除字典的对应的值 pop方法有返回值,返回删除元素的value值 不存在key的值会报错 dic.pop(key[,default]) 可以指定值 不存在用defalut的值 print(info.get('stu1106')) # 这是一种通过key来获取值得方式这样不会报错,没有则返回 print('stu1104' in info) #判断key的值在不在字典中 通过key的值来判断 。 print(info.keys()) #返回所有的key #打印所有字典key的 值
print(info.values()) #返回字典所有的value值
print(info.items()) # 返回元祖 把key跟value 组成元祖
info_list = list(info.items()) # 将 字典的key value的值改为 列表 存储 for k in info:# k是info 的key 遍历字典key的值打印
print(k,info[k])

4.可变类型集合

集合:一个或者 多个元素构成的整体叫做集合

集合的特性

1.天然去重 

2.集合内部元素是无序的

3.通过运算可以取出两个集合的符合条件的元素类型组成一个新的集合

常见的集合运算如下:

b={1,2,3,4,5,5,5,6}  #互异性天然去重的原则
c={2,3,4,8,9,10,56,45}
s_set = set("hello") # {'l', 'h', 'e', 'o'} 无须 且 去重 #集合的常用操作 s_set = {'a','b','c'} s_set.add("d") # 集合的添加 # 对序列的增加:
update(),而update类似extend方法,update方法可以支持同时传入多个参数
a={1,2}
a.update([3,4],[1,2,7])
a={1, 2, 3, 4, 7}
a.update("hello")
a={1, 2, 3, 4, 7, 'h', 'e', 'l', 'o'} #对集合元素的单个删除
#集合删除有两个办法:
#元素不在原集合中时: # set.discard(x)不会抛出异常
# set.remove(x)会抛出KeyError错误
a={1,2,3,4}
a.discard(1)
a={2, 3, 4}
a.discard(1) a={2, 3, 4}
a.remove(1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 1 b.add(90) #增加元素
b.remove(90) #删除元素 如果没有元素则报错
b.discard(4) #删除元素 没有则不报错
print(b)
b.pop() #删除元素(任意)
print(b) # 清空 set
pop():由于集合是无序的,pop返回的结果不能确定。且当集合为空时调用pop会抛出KeyError错误。
clear():清空集合
# 集合 操作
print(b-c) #意思就是拿b中的每一个元素去减c中的元素,得到不同的一个集合。
print(b|c) #并集两个集合的合并
print(b^c) #两个集合中不是共同部分的元素取出来
d=set(info) #设置集合 字典是key的值

5.字符串的操作


name='aaalcx lill'
print(name.index("l"))
print(name.count("l"))# 统计字符串某个字符串的数量
print(name.capitalize())#首字母大写
print(name.center(50,'*'))#把name放在中间 50 个字符
print(name.replace('l','L',4))#代替 三个参数
print("123".isdigit())#判断是否是整数
print("aaaooolll".endswith('ll'))
msg = "my name is {}, and age is {}"
print(msg.partition('is'))#is 中间分成元祖
print(msg.format("zj","25")) name.join("cx")
print(name.join("cxb"))# 对数字进行操作 name='abcd lill'
name1="abc \tlill"
name.strip()#变成字符串
name.title()#变成标题
print(name.rsplit())
print(name.capitalize())#首字母大写
print(name.count("a"))# 统计字符
print(name.center(50,"*"))#一共 打印50字符 不够用*补上,把name放中间
print(name.endswith("ll"))# 判断字符串结尾
print(name1.expandtabs(30)) print(name.find("li"))# 查找 索引!字符串可以切片
name3="my name is {name} and age is {age}"
print(name3.format(name="alix",age="22"))
print(name3.format_map({"name":"alex","age":"29"}))
print(name3.index("y"))
print(name.isalnum())# 是不是阿拉伯数字
print(name.isalpha())#判断纯粹的英文字符
print(name.isdecimal())#判断十进制
print(name.isdigit())# 判断是否整数
print(name.isidentifier())#判断是不是合法的标识符(变量名)
print(name.islower())# 判断是小写!
print(name.isnumeric())#判断是否是数字!!仅仅是数字 返回True
print(name.isspace())
print(name.istitle())
print(name.isprintable())# 是否可打印!在tty文件设备终端文件
print(name.isupper())# 全是大写
print("*****")
print("|".join(["1","2","3","4"])) # 列表 里面的字符串 变成 字符串
print("*****")
print(name.ljust(50,"-"))# 后面 补足*
print(name.rjust(50,'-'))
print(name.lower())# 大写变成小写
print(name.upper()) print("\nAlex\n".lstrip())#左边去空格或者回车
print("\nAlex\n".rstrip())#右边边去空格或者回车
print(name.strip())#两边都去空格 print("funny keys\n")
v=str.maketrans("abcdef","123456") # 数字对应!
print("Alex li".translate(v)) print("alex l".replace('l','L',1))
print("alex li".rfind("l"))#找到最右边的的l 并返回 print(name.split()) # 安照 空格 分成列表
print(name.split('a')) # 安照 a 分成列表
print(name.splitlines()) # 按照换行 分 linux window
print(name.startswith('a'))
print(name.swapcase()) #大小写转换
print(name.title())# 变标题
print("alex li ".zfill(50))# 50 个不够在前面补0 print(" name aaa ".split())
name='aa aaaa'
print(name.isalpha()) # 判断是不是字母!
print(len('你好'.encode())) import string
# maketrans 函数 对应的是设定一个格式 对应maketrans(input,output)生成的 是一个模板
table = str.maketrans(string.ascii_lowercase, string.ascii_lowercase[2:] + string.ascii_lowercase[0:2])
#对应的方法为 translate
print(str.translate('aaa', table))