2.数据类型补充
1.int
2.str
3.typle
# tu = ('name') 字符串 面试题
# tu = ('name', ) 元祖 元祖必须加,号
4,list 当循环列表时如果在循环中删除某个或某些元素,列表元素个数改变导致索引改变导致出错
方法一:
li = [11,22,33,44,55]
l2 = []
for i in range(0,len(li)):
if i % 2 == 0:
l2.append(li[i])
li = l2
print(li)
方法二:
del li[1::2]
print(li)
方法三
li = li[0::2]
print(li)
#方法四:
for i in range(len(li)//2):
del li[i+1]
print(li)
方法五: 面试题从后往前删
for i in range(len(li-1),0,-1):
if i % 2 == 1:
del li[i]
5.字典 循环删除键值对,字典的键值对个数改变,报错
dic = dict.fromkeys([1,2,3],'杨杰')
dic1 = dict.fromkeys(['abc'],'杨杰')
print(dic)
print(dic1)
dic = dict.fromkeys(['barry','alex'],[])
dic['barry'].append(11)
print(dic)
dic = {'k1':'barry','k2':'alex','name':'ritian'}
list = []
for i in dic:
list.append(i)
print(list)
for i in list:
if 'k' in i:
del dic[i]
print(dic)
a = list(dic.keys())
print(a,type(a))
for i in a:
if 'k' in i:
del dic[i]
print(dic)
转换:
1.int ---- str: str(int)
2.str ----- int :int(str) 字符串必须全由数字组成
3.bool ----str: str(bool)
4.str ---- bool : bool(str) 除了空字符串 剩下都是True
5.int ---- bool : 除了0剩下都是True
6.bool -- int : True --1 False --0
7.str --- list split
8.list --- str join
9.tuple -- list : list(tuple)
10list --- tuple : tuple(list)
11.list('abc') #迭代改变
12 tuple('ab_c) 迭代改变
13. 0,'',{},(),[],set{} ------ False
3.集合
http://www.cnblogs.com/jin-xin/articles/7738630.html
set1 = {'1','alex','2',True}
print(set1)
里面元素可哈希,无序,去重
l = [1,1,12,2,2,2,23,3,4,4,5]
set2 = set(l)
l1 = list(set1)
print(l1)
创建
set1 = {1,2,3}
set2 = set({1,2,'alex'})
增
set1.add('jinxing')
set1.update('老师') 迭代添加
删
set1.remove('alex')
set.pop() 随机删除 有返回值
set1.clear() 清空
del set1 整个删除
改不了只能for循环的查
for i in set1:
print(i)
交集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2)
print(set1.intersection(set2))
并集:
print(set1 | set2)
print(set2.union(set1))
差集
print(set1 - set2) set1独有的
print(set1.difference(set2))
反交集
print(set1 ^ set2)
print(set1.symmetric_difference(set2))
子集与超集
print(set1 < set2) set1是不是set2的子集
print(set1.issubset(set2))
print(set2 > set1) set2是set1的超集 set2必须完全包含set1
frozenset
s = frozenset('barry')
print(s)
4.深浅拷贝copy
li = [1,2,3]
l2 = li
li.append('barry')
print(li)
print(l2)
dic ={'name':'barry'}
dic1 = dic
dic['age'] = 18
print(dic)
print(dic1)
s = 'alex'
s1 = s
print(id(s),id(s1))
浅拷贝copy 以list举例
l1 = [1,[22,33,44],3,4,] 从嵌套的第二层开始指向的都是同一个内存空间,字典,元祖,列表,集合
l2 = l1.copy()
l1[1].append('55')
print(l1,id(l1))
print(l2,id(l2))
print(id(l1[1]))
print(id(l2[1]))
深拷贝copy 两个完全独立的,改变任意任何一个元素(无论多少层)另一个绝对不改变。
l1 = [1,[22,33,44],3,4]
import copy
l2 = copy.deepcopy(l1)