python自学 第三周

由于上一个视频的断更,现在换了个视频,正在赶,也相当与复习了一遍

# coding=utf-8

from functools import reduce

#处理序列中的每个元素,得到的结果是一个“列表”(迭代器)。元素个数与位置和原来的一样
#map()

# print(list(filter(lambda p:p['age']<=18,[{'name':"afdaf",'age':18}])))

# p = {'a':1,'b':2,'c':3}
#
# print(list(zip(*p)))
s=slice(0,5,2)
l = [3,5,4,2]
print(l[s])
# coding=utf-8

# 文件操作
# f = open('test.txt','w')
# f.write("123456")
# f.close()
# f = open('test.txt','r+')
# f.write("123456")
# f.close()
f = open('文件的其他操作方法.py','r', encoding='utf-8')

for i in  f:
    print(i)

for i in f:
    offs = -10

    while True:
        f.seek(offs, 2)
        data=f.readlines()
        if len(data) > 1:
            print("最后一行%" %(data[-1].encode('utf-8')))
            break
        offs *=2
 coding=utf-8
# f = open('test.txt', 'rb',encoding='utf-8')   # b的方式不能指定编码
# f = open('test.txt', 'rb')   # b的方式不能指定编码
# data = f.read()
# # 字符串---encode----->bytes
# # bytes--->decode----->字符串
# print(data)
# print(data.decode('utf-8'))
# f.close()


f = open('test01.txt', 'wb')
f.write(bytes('1111\n', encoding='utf-8'))
f.write('养护'.encode('utf-8'))

f = open('test01.txt', 'ab')
f.write(bytes('1111\n', encoding='utf-8'))
f.write('养护'.encode('utf-8'))

f = open('test.txt','rb')

# f.read()
# f.close()
# f.flush()
# f.encoding
# f.tell()
# f.seek()
# f.readlines()
# f.truncate()        # 截取

f.seek(-5,2)
data = f.read()
print(data)
print()
# coding=utf-8
"""
只要遵循迭代协议,那就是可迭代对象
迭代器是不可逆的,每一步都与上一步有关系
for循环本质是调用__iter__()在调用__next__()方法
"""

l = ['die', 'erzu', 'sunzi', 'chongsunzi']

iter_l = l.__iter__()

# print(iter_l.__next__())
# print(iter_l.__next__())
# print(iter_l.__next__())
# print(iter_l.__next__())
# print(iter_l.__next__())

print(next(iter_l))     # next()---->iter_l.__next__()  一样的


# 生成器可以理解为一种自动实现可迭代的类型
# 生成器函数:使用yield语句而不是return(课yield返回多次)
# 生成器表达式

def test():
    yield 1
    yield 2
    yield 3
g = test()
print(g.__next__())
print(g.__next__())



# 三元表达式
name = 'alex'

res = 'SB' if name == ' alex' else 'shuage'
print(res)



# 列表解析      不足:会占内存
egg_list=[]
for i in range(10):
    egg_list.append('鸡蛋{}'.format(i))
print(egg_list)

# 列表解析
l = ['鸡蛋{}'.format(i) for i in range(10)]   # 可以两元
print(l)

l2 = ['鸡蛋{}'.format(i) for i in range(10) if i >5]
print(l2)

# l = ['鸡蛋{}'.format(i) for i in range(10)if i >5 else i ]        # 没有四元

laomuji = ('鸡蛋{}'.format(i) for i in range(10))   # 生成器表达式,省内存
print(laomuji)
print(laomuji.__next__())
print(next(laomuji))

print(sum( x **2 for x in range (10)))
# coding=utf-8
import time
'''
生成器的yield相当于程序运行在哪里就会停下,下一次接着继续,占内存教小
'''
def test():
    print("开始!")
    yield 1
    time.sleep(2)
    yield 2
    time.sleep(2)
    yield 3

res = test()
print(res)
print(res.__next__())
print(res.__next__())
print(res.__next__())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值