基础数据类型的补充以及集合

列表1.基础数据类型的补充

元组:

  如果元组中只有一个数据,且没有逗号,则该‘元组’数据类型与里面的数据类型一致

列表:

列表之间可加不可减

l1=['wang','rui']

l2=['chen']

l3=l1+l2

print(l3)

将列表中索引为奇数的元素,全部删除:

l1=[11,22,33,44,55,66,77,88]
l2=[]
(1)del l1[1::2]
  print(l1)
(2)for i in l1:
  if i % 2 ==1:
l2.append(i)
  l1=l2
  print(l1)
(3)for i in range(len(l1)-1,-1,-1):
  if i % 2==1:
  l1.pop(i)
  print(l1)
在循环一个列表时,如果对列表中的某些元素进行删除,
那么此元素后面的所有元素就会向前进一位,他们的索引就会发生变化。
在循环一个列表时,最好不要对此列表进行改变大小(增删)的操作。

字典:
fromkeys():创建一个新的字典  只改变key,不改变values
dic1 = dict.fromkeys([1,2,3],'alex')
print(dic1)
面试题:创建字典的方式
1,
dic = {'name':'alex'}
2
dic = dict({'name':'alex'})
print(dic)
3, fromkeys()
陷阱:
dic1=dict.fromkeys([1,2,3],[])
print(dic1)
dic1[1].append(666)
print(dic1)
print(id(dic1[1]))=print(id(dic1[2]))=print(id(dic1[3]))
集合set
set:
  集合要求里面的元素必须是不可变的数据类型,但是集合本身是可变的数据类型
  集合里面的元素不重复,无序。
  用途:去重、关系测试
list去重
l1=[1,2,3,4,1,1,2,3]
set1=set(l1)
print(set1)
集合的增删:
set1={'yang','wang',1,2,3}
set1.add('zhang')  增
print(set1)  
set1.update('abc')  迭代增加
print(set1)
set1.remove(1)  删 元素
print(set1)
set1.pop()    随机
print(set1)
set1.clear()    清空
print(set1)
del set1    删除
print(set1)
关系测试:
set1={1,2,3,4,5}
set2={1,2,3,6,7}
print(set1&set2)  交集
print(set1.intersection(set2))
print(set1|set2)  并集
print(set1.union(set2))
print(set1^set2)  反交集
print(set1.symmetric_difference(set2))
print(set1-set2)  差集
print(set2.difference(set1))
set3={1,2,3}
set4={1,2,3,4,5}
print(set3<set4)  子集
print(set3.issubset(set4))
print(set3>set4)  超集
print(set3.issuperset(set4)
set1={1,2,3}
set2=frozenset(set1)
print(set2)
frozenset 不可变的数据类型
深浅copy
浅copy:
l1=[1,2,3,4,[22,1]]
l2=l1.copy()
l1.append(999)
print(l2)
l1[-1].append(999)
print(l2)
深copy:
import copy
l1=[2,3,4,5,[7,8]]
l2=copy.deepcopy(l1)
print(l2)
l1[-1].append(666)
print(l2)
应用场景:
深copy:完全独立的copy一份数据,与原数据无关系。
浅copy:如果一份数据,第二层开始,你想与原数据进行共用。
面试题:
切片属于浅copy
 




 

 

posted @ 2018-08-10 19:01  .why  阅读(207)  评论(0)    收藏  举报
Live2D