str知识点补充:
#join() 将列表中的每个元素中间加上一个字符,连接成一个字符串 list = ['a','b','c','d'] str = '*'.join(list) print(str) # a*b*c*d # 将列表 -> 字符串 用join() 将字符串 -> 列表,用split() 切割
关于列表或字典循环删除的问题:
列表:
#循环删除列表中的元素,以达到清空列表的结果 #错误写法 lis = [1,2,3,4] """ for i in lis: print(lis.index(i)) # 0 1 lis.remove(i) # [2,4] print(lis) #删除不干净的原因:每次删除一个元素,后面的元素总会向前进一个位置,到最后会找不到一部分索引 """ #way 1 :(可以达到目的,但不是很好) for i in range(0,len(lis)): lis.remove(lis[0]) #每次只删除最开始的元素 print(lis) #删除列表完美写法 new_lis = [] #先将要删除的东西放入到新列表中 for i in lis: new_lis.append(i) #利用新列表作为目标,去删除老列表中的东西 for el in new_lis: lis.remove(el)
原因:for 的运行过程中,会有一个指针来记录当前循环的元素是哪一个,一开始这个指针指向第0个,然后获取到第0个元素,紧接着删除第0个,这个时候,原来是第一个的元素就会自动编程第0个,然后指针向后移动一次,指向1元素,这时原来的1已经变成了0,也就不会被删除了。
字典:
#关于将字典清空 dic = {'a':1,'b':2,'c':3} #错误写法 # for i in dic: #这儿直接写dic 相当于dic.key() # dic.pop(i) # dictionary changed size during iteration 在遍历字典的时候不允许修改 #正确的写法 #先将你要删除的key存储到List中 li = [] for i in dic: li.append(i) #再根据li中的元素,删除字典中的键值对 for i in li: dic.pop(i) print(dic) # {}
由于删除元素会导致元素的索引改变,所以容易出现问题,尽量不要在循环中直接去删除元素,可以把要删除的元素添加到另一个集合中然后再批量删除。
#dict的fromkey() 通过list 创建一个dict #将前一项的元素迭代与第二项的元素形成键值对 #前面的每一项都会作为key,后面的列表中的内容作为value,形成字典 dic = {} # dic.fromkeys(['123','234'],"你好") # print(dic) #{} 没有接收返回值 dic = dic.fromkeys(['123','234'],["你好"]) #返回字典类型,需要赋值给dic print(dic) # {'123': ['你好'], '234': ['你好']} #两个key指向的是同一个value 一个变则都变 dic['123'].append('世界') print(dic['234']) # ['你好', '世界']
类型转换:
- 元组 -> 列表 list(tuple)
- 列表 -> 元组 tuple(list)
- list -> str str.join(list)
- str -> list str.split()
转换成False的数据:
0,‘’,None,[],{},set(),(), False
set集合
set集合是python中的一个基本数据类型,一般不是很常用,set中的元素是不重复的,无序的,里面的元素必须是可哈希的,即不可变的(int,str,tuple,bool)
set就是dict类型的数据,但是不保存value,只保存key,用{}表示