str-6个
# str :补充的方法练习一遍就行。6个
# s1 = 'taiBAi'
# capitalize 首字母大写,其余变小写
# print(s1.capitalize()) #str的操作,打印的是操作,操作结果才能呈现出来.因为对str进行操作
# title 每个单词的首字母大写
# msg= 'taibai say3hi' #用空格 , _ 中文等不是英文的将这个str的一行英文隔开,以划分有几个单词
# print(msg.title())
# center 居中
# s1 = 'barry'
# print(s1.center(20)) #不写用谁填充,默认用空格填
# print(s1.center(20,'*')) #用*填充左右空白
# swapcase() 大小写转换,每个元素都会换
# s = "alex"
# print(s.swapcase()) #"ALEX"
# s = "Alex"
# print(s.swapcase()) #"aLEX" #每个元素都会换
# find :通过元素找索引,若有重的,找到第一个就返回;找不到 返回-1 #推荐使用
# index:通过元素找索引,若有重的,找到第一个就返回;找不到 报错
# print(s1.find('a'))
# print(s1.find('r'))
# print(s1.find('o'))
# print(s1.index('o'))
元组 - 3点
# tuple - 3点
# 元组中如果只有一个元素,并且没有逗号,那么它不是元组,它与该元素的数据类型一致。 ***
# tu1 = (2,3,4)
# tu1 = (2)
# tu1 = ('太白')
# tu1 = ([1,2,3])
# tu1 = (1,)
# print(tu1,type(tu1))
# tu = (1,2,3,3,3,2,2,3,)
# count 计数
# print(tu.count(3))
# tu = ('太白', '日天', '太白')
# index 通过元素找索引
# print(tu.index('太白'))
列表 - 7点
# l1 = ['太白', '123', '女神', '大壮']
# count 计数
# index 通过匀速找索引(见上) #list中没有find
# print(l1.index('大壮')) #3
# sort 排序 #不能打印动作 **
# l1 = [5, 4, 3, 7, 8, 6, 1, 9]
# l1.sort() # 默认从小到大排序(升序)
# print(l1) #不能打印动作
# l1.sort(reverse=True) #从大到小排序-降序(需设置参数)
# print(l1)
# reverse 反转 #list这-不能打印动作 **
# l1 = [5, 4, 3, 7, 8, 6, 1, 9]
# l1.reverse() # 反转
# print(l1) #[9, 1, 6, 8, 7, 3, 4, 5]
# 列表可与列表相加 **
# l1 = [1, 2, 3]
# l2 = [1, 2, 3, '太白', '123', '女神']
# print(l1 + l2) #结果:[1, 2, 3, 1, 2, 3, '太白', '123', '女神'] 是相加后放到了1个列表里
# 列表与数字相乘 **
# l1 = [1, 'daf', 3]
# l2 = l1 * 3
# print(l2) #结果:[1, 'daf', 3, 1, 'daf', 3, 1, 'daf', 3]
# 坑1 -列表循环问题:循环一个列表的时,最好不要改变列表的大小(长度),这样会影响你的最终的结果。***
l1 = [11, 22, 33, 44, 55]
# 将索引为奇数对应的元素删除(不能一个一个删除,此l1只是举个例子,里面的元素个数不定)。
# 正常思路:
# 先将所有的索引整出来。
# 再加以判断,index % 2 == 1: pop(index)
# for index in range(len(l1)):
# if index % 2 == 1:
# l1.pop(index) #删的是元素的索引
# print(l1) #出错:列表的特性:因为从前往后删,删完一个元素后,后面的元素会集体前挪,索引改变,导致结果出错
# 4种办法出坑:
# 法一:最简单的-不循环了,直接切片删
# l1 = [11, 22, 33, 44, 55]
# del l1[1::2] #从第一个奇数索引开始切
# print(l1)
# 法二:倒序法删除元素
# l1 = [11, 22, 33, 44, 55]
# for index in range(len(l1)-1,-1,-1): #range顾头不顾腚
# if index % 2 == 1:
# l1.pop(index)
# print(l1)
# 法三:思维置换-将不用删的拿出来放入1个新列表
# 将索引为奇数对应的元素删除(不能一个一个删除,此l1只是举个例子,里面的元素个数不定)
# l1 = [11, 22, 33, 44, 55]
# new_l1 = []
# for index in range(len(l1)):
# if index % 2 ==0: #删奇数索引,那就将偶数索引取出来
# new_l1.append(l1[index])
# # print(new_l1)
# l1 = new_l1
# print(l1)
# 法四: 补充-,先把要删的元素取出来,再按元素删
li = [1,2,3,4,5]
new_li = []
for i in range(len(li)): #遍历索引
if i % 2 == 1:
new_li.append(li[i])
for em in new_li: #遍历的是元素,
li.remove(em) #按元素删-因为按索引删,list后面的元素会向前补位
print(li)
#坑2-循环添加列表元素的时候,会形成死循环
# 看代码写结果- 平行打印:什么都不打印(因为是死循环);在for循环里面打印,则是打印那些加进去的一大片结果(无休止)
# li = [1,2,3,4]
# for i in li:
# li.append(i)
# print(li) #因为每次都会加进去,会一直加下去到无穷 #因为是死循环,一直在循环,故结果出不来,是空白
# print(li) #是打印那些加进去的一大片结果
字典 - 3点
# 字典的补充 - 3点
# update 更新,有则覆盖,无则添加 *** #不能打印动作
# 关于update: #update 括号里的级别高--即是用括号里的去覆盖dict里原有的键的值
# 1.以键值对的形式增
# dic = {'name': '太白', 'age': 18}
# dic.update(hobby='运动', hight='175')
# print(dic) #结果:{'name': '太白', 'age': 18, 'hobby': '运动', 'hight': '175'}
# dic.update(name='太白金星')
# print(dic) #结果:{'name': '太白金星', 'age': 18}
# 2.以字典的形式增
# dic1 = {"name":"jin","age":18,"sex":"male"}
# dic2 = {"name":"alex","weight":75}
# dic1.update(dic2) # 更新,有则覆盖,无责添加
# print(dic1) # {'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75}
# print(dic2)
# 3.面试题: #考察元组的拆包-即分别赋值,list里的每一个元组就是dic里的键值对
# dic = {'name': '太白', 'age': 18}
# dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')]) #1个list里的所有元素都是2元素的元组
# print(dic) #{'name': '太白', 'age': 18, 1: 'a', 2: 'b', 3: 'c', 4: 'd'}
# 注:不能打印动作
# fromkeys 快速创建字典-将可迭代对象拆开当成键,可迭代对象后面的值是所有键的值
# 写在前面:#坑:必须先赋值再打印,因为创建dict是开辟了1个新的内存空间
# dic = dict.fromkeys('abc', 100) #将可迭代对象拆开当成键,100是所有键的值
# print(dic) #{'a': 100, 'b': 100, 'c': 100}
# 坑:(面试题)当可迭代对象的每一个元素赋予1个可变数据类型时,值共用一个,一个[]变其他的[]都变(因为每一个可迭代对象的元素共用的是同一个内存空间[],是一个人,不管里面做任何修改,[]仍然是这个[])
# dic = dict.fromkeys([1,2,3],[])
# #print(dic) #{1: [], 2: [], 3: []}
# dic[1].append(666) #代表往dic键1对应的值里追加666
# print(dic) #{1: [666], 2: [666], 3: [666]}
# 补充:当可迭代对象的每一个元素赋予1个不可变数据类型时,1个变,其他的不变
# dic = dict.fromkeys([1,2,3],1)
# #print(dic) #{1: 1, 2: 1, 3: 1}
# dic[1] = 123
# print(dic) #{1: 123, 2: 1, 3: 1} #1个变,其他的不变,因为是不可变数据类型
# 坑-循环问题:循环一个字典时,如果改变这个字典的大小,就会报错。 **重要
# 需求:将字典中的键中含有'k'元素的键值对删除。
# dic = {'k1': '太白', 'k2': 'barry', 'k3': '白白', 'age': 18}
# for key in dic:
# if 'k' in key:
# dic.pop(key)
# print(dic) #会报错:RuntimeError:字典在迭代期间更改大小
# 2种方法出坑:
# 出坑1:把含有"k"的键全部加入1个新list中,再去删list里的元素(即dict的键)-2次for循环遍历
# l1 = []
# for key in dic:
# if 'k' in key:
# l1.append(key)
# print(l1)
# for i in l1:
# dic.pop(i)
# print(dic)
# 出坑2:将dic_keys数据类型转换成list,再去删该list里的元素
# for key in list(dic.keys()): #将dic_keys数据类型转换成list
# if "k" in key: # 代表如果键中含"k" 注:循环的是谁就in谁
# dic.pop(key)
# print(dic) # 注:最后打印的是字典
# 4.popitem() 随机删除 #python3.6版本以后默认删除最后一个键值对
# dic.popitem()
# print(dic)
# 补充:如何更改pycharm解释器的版本
# 补充:python2 中不支持中文-如何操作可以支持中文? #几乎用不到