Python高级特性

# ## Python 高级特性
from collections import Iterable
from collections import Iterator

# #切片
# list切片
L = list(range(100))
print(L[0:3])  # 取前3个元素
print(L[:3])  # 取前3个元素
print(L[4:9])  # 取第4到第9位元素
print(L[-8:-4])  # 取倒数第8到倒数第4位元素
print(L[-8:])  # 取后8位元素
print(L[1:10:2])  # 取1到10之间的数字 步长为2

# tuple切片
A = (1, 2, 3, 4, 5, 6, 7, 9, 0, 8)
print(A[:6])

# 字符串切片
string = 'this is a new sentence !'
print(string[5:8])

# # 迭代

# dict迭代
d = {'a': 1, 'b': 2, 'c': 9}
for i in d:
    print(i)  # 默认情况下 dict迭代的是key

for v in d.values():
    print(v)  # for value in dict.value() 迭代dict的值

a_list = ['A', 'B', 'V', 'F']
for i, v in enumerate(a_list):  # 使用enumerate()将list 转为[索引-元素]对
    print(i, v)

two_d = [(1, 2), (2, 5), (5, 7), (7, 0)]  # 二维数组
for x, y in two_d:
    print(x, y)

# #列表生成式 (用于生成list的生成式)
print(
    [x * x for x in range(1, 11)]
)
print(
    [x * x for x in range(1, 11) if x % 2 == 0]  # 可加if判断
)
print(
    [m + n for m in 'ABC' for n in 'CDE']  # 两层循环
)

d = {'x': 'A', 'y': 'B', 'z': 'C'}
print(
    [k + '=' + v for k, v in d.items()]
)

L1 = ['Hello', 'World', 18, 'Apple', None]
print(
    [x.lower() for x in L1 if isinstance(x, str)]
)

# #生成器 generator
# 为节省内存 并不创建完整的list 而是一边用一边创建
# 只需要将生成式中的[]改为()
g = (x * x for x in range(1, 11))
print(
    g
)
# 输出 <generator object <genexpr> at 0x000000000104D1A8>

# 可通过调用next()获得generator的下一个值
print(
    '调用next()取得下一个值为:%s' % next(g)
)
print(
    '调用next()取得下一个值为:%s' % next(g)
)
print(
    '调用next()取得下一个值为:%s' % next(g)
)

# 亦可以使用for循环调出generator内部的值
for i in g:
    print(i)


# 定义一个generator
# 使用yield将函数转为generator,即将数据存放在容器中,调用时取出
def fib(max_n):
    n, a, b = 0, 0, 1
    while n < max_n:
        yield (b)
        a, b = b, a + b
        n = n + 1
    return 'done'


# 使用for循环调出generator内部的值
for n in fib(6):
    print(n)

# # 迭代器
# 可用for循环的数据类型有两种:
# 1、集合数据类型,如tuple、list、dict
# 2、generator,以及带yield的generator function
# 能直接作用于for循环的对象统称为 可迭代对象 Iterable
# 调用isinstance()判断对象是否为Iterable对象
print(
    isinstance([], Iterable)  # 返回True
)
print(
    isinstance((x for x in range(1, 11)), Iterable)  # 返回True
)

# 能被next()调用并不断返回下一个值得对象成为迭代器 Iterator,即惰性计算序列
# 调用isinstance()判断对象是否为Iterator对象
print(
    isinstance([], Iterator)  # list返回False
)
print(
    isinstance(('a', 'b', 'c', 'd'), Iterator)  # tuple返回False
)

# 生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator
# 将list、dict、str虽然是Iterable转化为Iterator,可使用iter()函数
print(
    isinstance(iter([]), Iterator)  # 返回True
)
print(
    isinstance(iter(('a', 'b', 'c', 'd')), Iterator)  # 返回True
)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值