set集合、深浅拷贝以及知识点补充

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)
View Code

  原因: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) # {}
View Code

由于删除元素会导致元素的索引改变,所以容易出现问题,尽量不要在循环中直接去删除元素,可以把要删除的元素添加到另一个集合中然后再批量删除。

#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']) # ['你好', '世界']
View Code

类型转换:

  • 元组 -> 列表  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,用{}表示

猜你喜欢

转载自www.cnblogs.com/liangying666/p/9150891.html
今日推荐