考点整理

2.ascii码一共八位,最左边一位是0
3. or 两边都是数字的一些情况 # x or y 如果 x 为真,则值为x,否则为y
.
列表中奇数索引元素删除
字典删除
字典删除
,,
面试题
View Code
and 两边的一些情况 #x and y 如果 x 为真,则值为y,否则为x

四超出范围不报错

五:布尔值转化为字符串
a = str(2>1)
b = str(True)
print(a,type(a))
print(b)

六、字符串中一个整体寻找索引
a = 'abcde' print(a.find('bcdd')) # 1 当字符串作为一个整体去找索引的时候 匹配第一个字母的索引 不存在就返回-1 index 是报错
七、输出为空 取值时切片范围不对时候是空
、
八、什么时候输出none
列表修改的过程

(2)字典中 dic.get[key],如果key不存在,则返回值是None
九、请看以下代码:分割转换为列表

十:列表的索引是单个元素 列表的切片是列表
li = [1,2,3,4,5,6]
求[6] ; print(li[-1:]) 或者li[7:] 错误:li[-1]
十一、一行代码实现 a,b 的值反转
b = 2 c = 3 b,c = c,b print(b,c) # 3 2
十二、starwith(A' or 'a')
等同于 此时会先做逻辑运算,结果为‘A’
十三:任何数据类型只加一个括号还是本身的数据类型

注:如果后边加一个逗号,妥妥的是元组
十四:用循环打印 删除 列表中的奇数位索引对应的值
# #删除奇数位索引值 #方一: a = [1,2,3,4,5,6,7] del a[1::2] print(a) #方法二 a = [1,2,3,4,5,6,7] a = a[0::2] print(a) #方法三(不建议使用此方法,如果有两个相同的元素可能会出错) a = [1,2,3,4,5,6,7] b = a.copy() for i in range(len(b)): if i%2==1: a.remove(b[i]) print(a) #方法四 a = [1,2,3,4,5,6,7] for i in range(0,len(a)): if i%2==1: del a[(i+1)//2] print(a) #方法五 a = [1,2,3,4,5,6,7] b = [] for i in range(len(a)): if i%2 ==0: b.append(a[i]) a = b #方法五 a = [1,2,3,4,5,6,7] b = [] for i in range(len(a)): if i%2 ==0: b.append(a[i]) a = b print(a)''' e = {1:2,3:4} e.pop(1) print(e) # 方法6 a = [1, 2, 3, 4, 5, 6, 7] for i in range(len(a)-1,-1,-1): if i % 2 == 1: del a[i] print(a)
十五:用循环打印 删除 字典中的key值中包含字符k的键值对
#删除列表中带K的键值对 l1={'k1':'v1','k2':'v2','k3':'v3','n1':'m1'} #方法一 l1={'k1':'v1','k2':'v2','k3':'v3','n1':'m1'} l2 = {} for i,k in l1.items(): if 'k' not in i: l2[i] = k l1 = l2 print(l1) #方法二 l1={'k1':'v1','k2':'v2','k3':'v3','n1':'m1'} l2 = [] for i in l1: if 'k' in i: l2.append(i) for i in l2: del l1[i] print(l1) #方法三 l1={'k1':'v1','k2':'v2','k3':'v3','n1':'m1'} l2 = list(l1.keys()) for i in l2: if 'k' in i: del l1[i] print(l1) #方法四 l1={'k1':'v1','k2':'v2','k3':'v3','n1':'m1'} l2 = l1.copy() for i in l2: if 'k' in i: del l1[i] print(l1)
while True: for k in dic: # 'k1':'v1', #'y2':'v1', #'k11':'v1' if 'k' in k: del dic[k] break break print(dic)
dic = {'k1':'v1','age':18,'k2':'v2','k3':9}
while True:
flag = True
for i in dic:
if 'k' in i:
del dic[i]
flag = False
break
if flag:
break
print(dic)
dic = {'k1':'v1','age':18,'k2':'v2','k3':9}
while True:
for i in dic:
if 'k' in i:
del dic[i]
break
else:
break
print(dic)
十六:两个相等数据 在内存中地址相等的范围

第十七:用fromkeys 把列表变为字典 :注意事项,创建的字典的值指向同一地址,一个改变另一个也改变,除非重新赋值

18 判断字典中某个键是否存在,要用in,比get()要好很多 get 的返回值可能就是v
19.range可以切边
20. 无限循环嵌套

21.面试题:
# 5.以下的代码的输出将是什么: lis1=_[10,'a']___list2 =[123]___list3 = [10,'a'] # def extendList(val,list=[]): # list.append(val) # return list # list1 = extendList(10) # list2 = extendList(123,[]) # list3 = extendList(‘a’) # print “list1 = %s”%list1 # print “list2 = %s”%list2 # print “list3 = %s”%list3
22.生成器
def demo(): for i in range(4): yield i g=demo() g1=(i for i in g) g2=(i for i in g1) print(list(g1)) print(list(g2))
def add(n,i): return n+i def test(): for i in range(4): yield i g=test() for n in [1,10]: g=(add(n,i) for i in g) print(list(g))
import os def init(func): def wrapper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return wrapper @init def list_files(target): while 1: dir_to_search=yield for top_dir,dir,files in os.walk(dir_to_search): for file in files: target.send(os.path.join(top_dir,file)) @init def opener(target): while 1: file=yield fn=open(file) target.send((file,fn)) @init def cat(target): while 1: file,fn=yield for line in fn: target.send((file,line)) @init def grep(pattern,target): while 1: file,line=yield if pattern in line: target.send(file) @init def printer(): while 1: file=yield if file: print(file) g=list_files(opener(cat(grep('python',printer())))) g.send('/test1')
列表推导式,生成器 ,匿名函数混搭
#谈匿名函数与生成器 在列表生成器中变量的取值 # a = ((k for k in range(i)) for i in range(2,5)) # i = 2 # g = [(k for k in range(i))] # i = 3 # g.append((k for k in range(i))) # for j in g: # print(j) # for l in j: # print(l) # range 并不是生成器 所以range(i)一旦生成是固定的。不会变 # < generator object < genexpr > at 0x00000000028D2468 > # 0 # 1 # < generator object < genexpr > at 0x00000000028D24C0 > # 0 # 1 # 2 #对比如下 # a = ((k+i for k in range(i)) for i in range(2,5)) # for j in a: # print(j) # for l in j: # print(l) # < generatorobject < genexpr > at0x0000000002905468 > # 0 # 1 # < generatorobject < genexpr > at 0x00000000029054C0 > # 0 # 1 # 2 # < generator object < genexpr >.< genexpr > at 0x0000000002905410 > # 2 # 3 # < generatorobject < genexpr >.< genexpr > at0x0000000002905570 > # 3 # 4 # 5 # < generatorobject < genexpr >.< genexpr > at0x0000000002905410 > # 4 # 5 # 6 # 7 #如果上边换成列表 打印结果将都变成 4 5 6 7 # a = (lambda :i*2 for i in range(4)) # print(a) # for k in a: # print(k()) # 匿名函数和 函数在 列表推导式或者生成器推导式的变量取值 #1.匿名函数 # a = [lambda :i*i for i in range(4)] # b = (k() for k in a) # for j in b: # print(j) # 9 9 9 9 # a = (lambda :i*i for i in range(4)) # b = (k() for k in a) # for j in b: # print(j) # 0,1,4,9 #2.函数 b = lambda : i*i def f1(x): #函数内的作用域 不能调用另外一个作用域的变量 如果在全部变量则可以调用 return x*i i = 0 a = (f1(2) for i in range(1,4)) print(list(a)) # 0,0,0,0 g = (f1 for i in range(1,4)) print(list(g)) #[0,0,0]
浙公网安备 33010602011771号