美文网首页
Python:4.高级特性

Python:4.高级特性

作者: 许瘦子来世 | 来源:发表于2018-07-10 14:29 被阅读8次

切片

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 切片
L = ['Mick', 'Tom', 'Sarah', 'Jack']
print(L[0:3]) # 从索引0开始取,直到索引3为止
# 第一个索引是0,还可以省略
print(L[:3])
# 取倒数元素
print(L[-2:])

r = list(range(100))
print(r[:10])
print(r[-10:])
print(r[10:20])
print(r[:10:2]) # 前10个数,每两个取1个
print(r[::5]) # 所有数,每5个取1个
print(r[:]) # 复制一个list

# tuple元祖切片操作
print((1,2,43,2,3,4)[:3])

# 字符串切片操作.Python没有针对字符串的截取函数,只需要切片操作即可
print('abcdefgh'[:3])

迭代

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from collections import Iterable

# 迭代:只要是可迭代对象,无论有无下标,都可以迭代

# 字典迭代
d = {'a':1, 'b':2, 'c':3}
# 默认情况下,dict迭代的是key
for key in d:
    print(key)
# 迭代value
for value in d.values():
    print(value)
# 迭代key和value
for k,v in d.items():
    print(k,v)

# 字符串迭代
for ch in 'ABVC':
    print(ch)

# 判断一个对象是否是可迭代对象
'''
1. 通过collections模块的Iterable
'''
print(isinstance('abc',Iterable))

# 下标循环 enumerate函数,可以把list变成索引-元素对
for i,value in enumerate(['a','b','c']):
    print(i,value)

for x,y in [(1,2),(3,4),(5,6)]:
    print(x,y)

列表生成式

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os

# 列表生成式:list comprehensions

# 生成[1*1, 2*2, 3*3, ... ,10x10]
a = [x * x for x in range(1,11)]
print(a)
# for 循环后还可以加上if判断,这样就可以筛选出仅偶数的平方
b = [x * x for x in range(1,11) if x % 2 == 0]
print(b)
# 两层循环,生成全排列
c = [m + n for m in 'ABC' for n in 'XYZ']
print(c)

# 列出当前目录下的所有文件和目录名
d = [x for x in os.listdir('.')]
print(d)

# 使用两个变量来生成list
e = {'x':'A', 'y':'B', 'z':'C'}
f = [k + '=' + v for k,v in e.items()]
print(f)

# 将list中所有的字符串变成小写
g = ['Hello', 'World', 'IBM', 'Apple']
h = [s.lower() for s in g]
print(h)

生成器

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 生成器 generator:一边循环一边计算的机制
'''
1. 与列表生成式的区别:将[]改成()
2. 通过next()函数获得generator下一个返回值
'''
a = (x * x for x in range(10))
for b in a:
    print(b)

# 如果一个函数定义中包含了yield关键字,就是一个generator函数
'''
1. 在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行
'''
def fib(max):
    n,a,b = 0,0,1
    while n < max :
        yield b
        a, b = b, a + b
        n = n + 1
    return 'done'

c = fib(10)
for d in c :
    print(d)
# 用for循环调用generator时,发现拿不到generator的return语句的返回值
# 要拿到返回值,必须捕获StopIteration错误,返回值包含在StopIteration的value中
d = fib(12)
while True:
    try:
        x = next(d)
        print('d:',x)
    except StopIteration as e:
        print('Generator return value:',e.value)
        break

迭代器

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 迭代器
'''
可迭代对象:Iterable
1. 用isinstance()判断一个对象是否是Iterable对象
2. list, tuple, dict, set, str等

迭代器:Iterator
1. 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
2. 可以使用isinstance()判断一个对象是否是Iterator对象
3. 生成器
4. 迭代器对象表示的是一种数据流,可以把这个流看做是一个有序序列,却不知道序列长度
5. 迭代器的计算是惰性的
6. 可以表示一个无限大的数据流,例如全体自然数
'''
from collections import Iterator

# 判断是否是迭代器
print(isinstance((x for x in range(10)),Iterator))

# 将可迭代对象转换成迭代器,用iter()函数
print(isinstance(iter('abc'),Iterator))

参考

  1. 廖雪峰的Python教程

相关文章

  • Python:4.高级特性

    切片 迭代 列表生成式 生成器 迭代器 参考 廖雪峰的Python教程

  • Python学习(三)

    Python的高级特性 python中有很多高级特性,比起C/C++来说要简单许多,运用起来十分方便。 切片 通常...

  • Python高级特性

    切片slice取指定索引范围的操作:[0:10:2]-->意为从第一个元素到第11个元素,元素之间隔2 迭代ite...

  • python 高级特性

    1.切片对取数据很方便,如取一个list的前n个元素,没有接触到切片的,可以使用循环,但是用切片就会很简单: 也支...

  • Python高级特性

    切片 迭代 列表生成式 生成器 generator generator:按照某种算法推算出来结果,是一种一边循环一...

  • Python——高级特性

    #!/usr/bin/python # -*- coding:UTF-8 -*- __author__ = 'wx...

  • python高级特性

    python高级特性 iteration迭代 对list,tuple的遍历被称为迭代。对list实现类似Java那...

  • python高级特性

    一、列表生成器 1. 形式: [表达式 for ... in 可迭代类型 [if expression] ] 2....

  • Python 高级特性

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

  • Python高级特性

    掌握了Python的数据类型、语句和函数,基本上就可以编写出很多有用的程序了。 比如构造一个1, 3, 5, 7,...

网友评论

      本文标题:Python:4.高级特性

      本文链接:https://www.haomeiwen.com/subject/vlsfpftx.html