#面试问 哪些对象可以使用for循环 或者可以遍历
#可迭代的对象或者迭代即协议的对象支持遍历和 循环
f=open(‘data.txt’,encoding=‘utf-8’)
print(f.next())
#readlines 是返回一个列表,最好不用,因为返回列表值,占的内存较大
#迭代工具 for 推导 map 迭代器对象 : 已经实现 和 可迭代对象:iter() 用于生成迭代器
列表list 不能迭代,但是可用for iter()实现迭代
urls=[1,2,3]
print (iter(urls) is urls)
i =iter(urls)
print (i.next())
print (i.next())#用于迭代
#返回所有的元素,所有的元素要平方值
l=[1,2,3]
res=[]
for x in l:
res.append(x**2)
print (res)
i=iter(l)
while True:
try:
x=res.append(next(i)2)
except StopIteration:
break
print (res)
res=[x2 for x in l]
print (res)
emp={‘name’:‘tom’,‘aeg’:20}
for k,v in emp.items():
print (k,v)
print (urls)
urls=[‘hwjgjw.com’,‘hhiuiiy.com’]
res=[url.upper() for url in urls]#改成大写
print (res)
res2=[url for url in urls if url.endswith(’.com’)]#是endswith 不是endwith
print(res2)
#内置可迭代对象 range() map() zip()
#zip 将两个集合合成一个
result=zip([‘x’,‘y’,‘z’],[1,2,3])
for x in result:
print (x)
#zip 有next方法 result.next(),属于可迭代对象
def double_number(x):
return x*2
l=[1,2,3,4,5]
result=list(map(double_number,l))#将l 应用在double_nnumber,map的作用是对每个对象都有相同的操作
print (result)
#函数 最大化代码重用 最小化代码冗余 过程分解
#定义函数
#调用函数
def learning(name,course,start,end):
print (’{}报名课程:《{}》’.format(name,course))
print (‘从第{}节到第{}节’.format(start,end))
learning(‘tom’,‘biancheng’,1,3)
def add_number(x,y):
result=x+y
return result
a=10
result=a+add_number(5,3)
print (result)
#函数 定义 def方法名(参数1…):
#调用 直接函数名(实际参数)
#变量作用域 全局global 局部 local Built-in 封装 Enclousure local 是最底层 LEGB
def gg(seq1,seq2):
res=[]
for x in seq1:
if x in seq2:
res.append(x)
return res
s1=‘ghsdiuyg’
s2=‘dgkegfie’
l=gg(s1,s2)
print (l)
x=55
def func():
global x
x=99
print (x)
print(‘quanju’,x)
print (‘jubu’)
func()
print (‘全局x:’,x)
#参数
def change_number(x):
x+=10
x=5