前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python3_高级特性

python3_高级特性

作者头像
yifei_
发布2022-11-14 14:29:54
1580
发布2022-11-14 14:29:54
举报
文章被收录于专栏:yifei的专栏

切片|迭代|列表生成式|生成器|迭代器。

代码语言:javascript
复制
#!/usr/bin/python3
# -*- coding: utf-8 -*-

print("切片-------------")
#就像切面包一样,你想取列表或tuple的第n-m个元素是,就可以使用切片(slice)
a=['aaa','bbb','ccc','ddd']
print(a)
print(a[:3])
print(a[1:3])
print(a[-2:]) #取最后两个元素
print(a[-3:-1]) #倒数第三个到倒数第二个(总2个元素)
L=list(range(30))
print(L)
print(L[:10:2]) #前10个数,每隔两个取一个
print(L[:]) #什么都不写可以原样复制一个list
# tuple和字符串也可以使用切片操作
print((0,1,2,3,4,5,6)[:3])
print("abcdefg"[::2])

print("利用切片,实现trim()-------------")
def trim(s):
	if len(s)==0:
		return s
	if s[0]==' ':
		return trim(s[1:])
	if s[-1]==' ':
		return trim(s[:-1])
	else:
		return s
#test
if trim('hello  ') != 'hello':
    print('测试失败!')
elif trim('  hello') != 'hello':
    print('测试失败!')
elif trim('  hello  ') != 'hello':
    print('测试失败!')
elif trim('  hello  world  ') != 'hello  world':
    print('测试失败!')
elif trim('') != '':
    print('测试失败!')
elif trim('    ') != '':
    print('测试失败!')
else:
    print('测试成功!')

print("判断是否可以迭代-------------")
from collections import Iterable
print(isinstance('abcd',Iterable))
print(isinstance([1,2,3,4],Iterable))
print(isinstance((1,2,3,4),Iterable))

print("enumerate实现下标循环-------------")
for i,value in enumerate([1,2,3,4]):
	print(i,value)

print("使用两个变量迭代-------------")
for x,y in ((1,1),(2,2),(3,3)):
	print(x,y)

print("列表生成式-------------")
#顾名思义,用来生成列表的式子
print([x*x for x in range(1,11)])
print([x * x for x in range(1,11) if x%2 == 0])
#两层循环生成全排列
print([m+n for m in'abc' for n in 'xyz'])
#用列表生成式列出当前目录所有文件
import os
print([d for d in os.listdir('.')])
#列表生成式将字符串转小写
L=['Hello','World','IBM','Apple']
print([s.lower() for s in L])
#practice 
L1 = ['Hello', 'World', 18, 'Apple', None]
L2 = [s.lower() for s in L1 if isinstance(s, str)]
print(L1)
print(L2)
if L2 == ['hello', 'world', 'apple']:
    print('测试通过!')
else:
    print('测试失败!')

print("生成器-------------")
g=(x*x for x in range(10))
print('next(g):')
next(g)
next(g)
next(g)

#fib
print('斐波那契数列')
def fib(max):
    n,a,b = 0,0,1
    while n<max:
        yield b  #把函数变为generator
        a,b=b,a+b
        n=n+1
    return 'done'

f=fib(9)
#用for循环遍历生成器,不用自己捕获异常
for x in f:
    print(x)

#自己用next遍历,需要捕获异常
while True:
    try:
        x=next(f)
        print('g:',x)
    except StopIteration as e:
        print('Generator return value:',e.value)
        break

#杨辉三角
def triangles():
    l=[1]
    while True:
        yield l
        l=[0]+l+[0]
        l=[l[i]+l[i+1] for i in range(len(l)-1)]

t=triangles()
for i in range(7):
    print(next(t))

#迭代器 可迭代的
from collections import Iterator
from collections import Iterable
print(isinstance([],Iterator))
print(isinstance([],Iterable))

参考

欢迎与我分享你的看法。 转载请注明出处:http://taowusheng.cn/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档