相识python --------str字符串 int整形 bool布尔值 tu元祖 set()集合 dict 字典的数据补充
int 和 str
a = ["蒋阳" ," 侯小青" ,"龙池", "程丽" ,"冯霞"]
print (a.capitalize()) 首字母大写
print (a.title()) 每个单词首字母大写
print(a.swappcase) 大小写转换
print(a.center(20,"*")) 居中 填充
print(a.find("c")) 查找 通过元素查找索引,找不到时返回-1
print(a.index()) 查找 通过元素查找索引,找不到返回就报错
print("_".join(["1","2","2"])) 拼接 将列表转换成字符串
str + str
str * 5
字符串进行加操作,乘操作都是开辟新的空间
li = ["蒋阳" ," 侯小青" ,"龙池", "程丽" ,"冯霞"]
s = "_".join(li)
print(s)———————— 蒋阳_ 侯小青_龙池_程丽_冯霞
li = "我喜欢花姑凉"
s = "_".join(li)
print(s)———————————— 我__喜_欢___花__姑__凉
列表
lst = [1,23,4,5,7,8,9]
print(lst.index(4)) # 通过元素查找索引
lst.sort() # 排序 默认是升序
lst.sort(reverse=True) # 降序
print(lst)
lst = [1,23,4,5,7,8,9]
lst.sort()
lst.reverse() # 人工降序
print(lst)
lst = [1,23,4,5,7,8,9]
lst.reverse()
print(lst) # 将源数据进行反转
lst = [1,23,4,5,7,8,9]
lst1 = lst[::-1]
print(lst)
print(lst1) # 不修改源数据进行反转
面试题:
lst = [1,[]] * 5
print(lst)
lst[1].append(6)
print(lst)--------[1, [], 1, [], 1, [], 1, [], 1, []]
[1, [6], 1, [6], 1, [6], 1, [6], 1, [6]]
循环删除列表中每一个元素
li = ["蒋阳" ," 侯小青" ,"龙池", "程丽" ,"冯霞"]
for i in li :
Li.remove(i)
print(li)———————结果是:["后小青","程丽"]————— for 的运行过程中.会有一个指针来记录当前循环的元素是哪一个,一开始就是指针向第零个.然后获得是第零个元素.这个时候.原来第一个的元素会自动的变成第零个.然后指针向后移动一次,指向1元素.这是原来的1已经变成了0,也就不会被删除.
用pop删除看看
li = ["蒋阳" ," 侯小青" ,"龙池", "程丽" ,"冯霞"]
for i in range(0,len(li)):
del li [i]
Print (li)———— [' 侯小青', '程丽']———— 结果: 报错
i= 0, 1, 2 删除的时候li[0] 被删除之后. 后⾯面一个就变成了了第0个.
以此类推. 当i = 2的时候. list中只有一个元素. 但是这个时候删除的是第2个 肯定报错啊
经过分析发现.循环删除都不行.不论是用del还是用remove.都不能实现.
pop——————删除最后一个
li = ["蒋阳" ," 侯小青" ,"龙池", "程丽" ,"冯霞"]
for el in li:
li.pop() # pop也不行
print(li) 结果: ["程丽" "候小青"]
只有这样才可以删除
for i in range (0,len(li))----------------循环len(li)次, 然后从后往前删除
li.pop ()
print(li)—————— 结果:[]
或者用一个列表来记录你要删除的内容.憨厚循环删除
li = ["蒋阳" ," 侯小青" ,"龙池", "程丽" ,"冯霞"]
li1 = []
for i in li :
li1 .append(i)
for i in li1 :
li .remove(i)
print (li)
注意 由于删除元素会导致元素索引改变,所以容易出现问题.尽量不要再循环中直接删除元素.可以把要删除的元素添加到另一个集合中然后在批量删除
.tuple 元祖
面试:
tu = (1)
tu1 = ("alex")
tu2 = (1,) #元组
tu = (12,3,4) + (4,5,3,4)
print(tu)
tu = (1,[]) * 3
print(tu)
tu[-1].append(10)
print(tu)
dict
dict中的frome(),可以帮助我们通过list来创建一个dict
dic = dict.fromkeys(["jay", "JJ"], ["周杰伦", "麻花藤"])
print(dic)——————— {'jay': ['周杰伦', '麻花藤'], 'JJ': ['周杰伦', '麻花藤']}
前面列表中的每一项回作为key,后面列表中的内容作为value.生成dict
dic = dict.fromkeys(["jay", "JJ"], ["周杰伦", "麻花藤"])
print(dic)
dic.get("jay").append("胡⼤大")
print(dic) —————— 因为两个键对应的是相同的值 因此改变一个另一个也会改变
结果:
——— 代码中只是更更改了了jay那个列表. 但是由于jay和JJ⽤用的是同⼀个列列表. 所以. 前面那个改了. 后 面那个也会跟着改
dict中元素在迭代过程中是不允许进行删除的
dic = {'k1': 'alex', 'k2': 'wusir', 's1': '⾦老板'} # 删除key中带有'k'的元素
for k in dic:
if 'k' in k:
del dic[k]
代的时候不不允许进⾏行行删除操作
print(dic)---------错误
要把删除的元素暂时先保存在一个list中,然后循环删除list,再删除
dic = {'k1': 'alex', 'k2': 'wusir', 's1': '⾦老板'}
dic_del_list = []
# 删除key中带有'k'的元素
for i in dic:
if 'k' in i :
dic_del_list.append(i)
for el in dic_del_list:
del dic[el]
print(dic)
类型转换:
元祖=>列表 list(tuple)
列表=>元祖 tuple(list)
list=>str str.join(list)
str=>list str.split()
转换成False的数据
0,"",None,[],(),{},set()==>False
1.可变:
list
dict
set
2.不可变:
int
str
bool
tuple
3.有序:
list
tuple
str
4.无序:
dict
set
取值方式:
1.索引
list
tuple
str
2.键
dict
3.直接
int
bool
set
死循环
lst = [1,2,3]
for i in lst:
lst.append(4)
print(lst)
lst = [11,22,33,44]
for i in lst:
lst.remove(i)
print(lst)
for i in lst:
del lst[-1]
print(lst)
lst = [11,22,33,44]
for i in lst:
lst = [11,22,33,44]
for i in range(len(lst)):
del lst[-1]
print(lst)
for i in range(len(lst)):
lst.pop()
print(lst)
lst = [11,22,33,44]
lst1 = lst[:]
for i in lst1:
lst.remove(i)
print(lst)
使用for循环清空列表元素内容
1.从后向前删除, 2.创建一个新的容器,循环新的容器删除旧的容器内容
面试题:
lst = [1,[2]]
lst[1] = lst
print(lst)
答案: [1, [...]]
字典和集合:
dic = {"key":1,"key1":2}
for i in dic:
if i == "key1":
dic[i] = dic[i] + 8 # dic[i] = 10
else:
print("没有这个键!")
print(dic)
字典和集合在遍历(循环)时不能修改原来的大小(字典的长度),可以进行修改值
s = {1,2,3,4,5,6}
for i in s:
s.pop()
print(s)