python之路——15

复习

1.迭代器
1.可迭代协议:含有iter
2.迭代器协议:含有iter和next
3.特点:节省内存,逐一取值
2.生成器
1.生成器函数
1.含有yield关键字
2.特点:1.调用后不执行,返回生成器
2.不断取值,遇到yield停止
3.取值方法: for、next、send、强制转换
2.生成器表达式

学习内容

1.内置函数
1.作用域相关
global 和globals() 不同 nonlocal 和 locals()不同
2.迭代相关
next() iter() range()
3.其他
1.dir——查看一个对象拥有的方法
2.callable——检测是否可调用
3.help
4.import 导入模块
5.open——文件操作
6.writable() readable()——检测文件是否可读/写
7.id() ——内存地址
8.hash ——字典的键,哈希产生一串数,标记内存地址,将值放入;字典的键必须为可哈希类型
——hash值 在一次程序的执行中总是不变的
9.input
10.print 自带回车(end='\n'); # progress bar
11.exec 没有返回值,适合处理简单的流程控制;eval 有返回值,适合处理有结果的简单计算。 两者均可执行字符串类型代码——'1+2+3+4'
12.compile 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。
4.数据类型
int bool complex float(可以写成分数的小数,即不包括无限不循环小数)
# 354.123 = 3.54123*10^2 = 35.4123*10^1 浮点
5.进制转换
bin(0b) oct(0o) hex(0x)
6.数学运算
abs 绝对值
divmod(7,2)=(3,1) 7/2=3....1
round(3.14159,3) = 3.142
pow(2,3) = 8 幂运算 pow(2,3,3) = 2 2^3取余3=2
sum(iterable,start)
min(1,2,3,4) = min([1,2,3,4]) = 1 min(1,2,3,-4,key = abs) = 4
max

代码区

1.打印进度条

import time
for i in range(0,101,2):
     time.sleep(0.1)
     char_num = i//2      #打印多少个'*'
     per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
     print(per_str,end='', flush=True)

2.load......  点为动态

import time
print("Loading",end = "")
for i in range(6):
    print(".",end = '',flush = True)
    time.sleep(0.2)

3.注意名字指向内存地址,{}可变数据类型,容器数据类型,一个改变,都跟着改变

kvps ={'1':1, '2':2}
thecopy = kvps
kvps['1'] = 5
sum1 = kvps['1'] + thecopy['1']
print(sum1)

4.练习题目

# 复数不能比较大小
# 只能在循环体中使用break
print(3>2==2) # 3>2--True   2==2--True

print(43>=1 and 'A'<'b') # ASCII A-65 a-97   转换成ASCII比较
print(43>=1 and 'A'<'b' and 1) # 返回1

print('abc'>'bca')   # 字符串首字母ASCII比较大小,  元祖不能比大小
print([1,2]>[2,1])   # 列表从第一个位置开始比

c = 5+6j
print(type(c.imag))
is 比较内存地址
== 比较值

5.python2 与python3的区别

k = 1000
count = 0
while k>1:
     count += 1
     print k   #  python 2 语句
     k = k/2
     print(count)

6range切片

l = range(100)
print(list(l[0:3]))
print(l[98])
print(l[-2])
print(l[-10:])
l1 = l[:]
print(l)

7.默认参数陷阱问题, 类似于函数名字问题,

def extendlist(val,lis=[]):
     lis.append(val)
     return lis
list1 = extendlist(10)         # 函数返回lis 是内存地址,即list1指向同一个列表
list2 = extendlist(123,[])
list3 = extendlist('a')        # list3也指向lis,  lis指向的列表变了,所有的指向这个列表的变量值都变了
print('list1 = %s'%list1)
print('list2 = %s'%list2)
print('list3 = %s'%list3)

 8.删除list中的重复元素

li = [1, 3, 1, '1', 'asd', 'asd', 'asd12']
li_new = []
for i in li:
     if i not in li_new:
          li_new.append(i)
print(li_new)

猜你喜欢

转载自www.cnblogs.com/wan2-0/p/10620921.html