python总结——高级特性

python中有许多高级的特性,可以使我们减少很多代码量。

切片

切片可以实现列表、字符串等的截取
写法:
L=[1,2,3,4,5,6,7,8]
l[初始位置(为0可省略,可为负):终止位置(不包含次位置):间隔量(默认为1)]

>>> L
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> L[0:1]
[1]
>>> L[-1:0]
[]
>>> L[-1:]
[9]
>>> L[1:9:2]
[2, 4, 6, 8]

对于字符串也同样有效

迭代

可以用for…in循环来便利列表,元组,字典等的值

>>> for i in L:
...     print(i)
... 
1
2
3
4
5
6
7
8
9

字典默认遍历的是键,要遍历值,用.values()方法,要全部遍历,用.items()方法。

>>> d={'a':1,'b':2,'c':3}
>>> d
{'b': 2, 'c': 3, 'a': 1}
>>> for key in d:
...     print(key)
... 
b
c
a
>>> for value in d.values():
...     print(value)
... 
2
3
1
>>> for k,v in d.items():
...     print(k,v)
... 
b 2
c 3
a 1

通过collections模块的Iterable类型判断一个数据是否是可迭代型:

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str
True
>>> isinstance([1,2,3], Iterable) # list
True
>>> isinstance(123, Iterable) # 整数
False

列表生成式

是Python内置的非常简单却强大的可以用来创建list的生成式。
语法
[生成元素格式 for循环(可多层和if判断)]

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

生成器

在Python中,这种一边循环一边计算的机制,称为生成器:generator。
最简单的方法是把生成式的[]改为()。

>>> l=(x * x for x in range(1, 11) if x % 2 == 0)
>>> l
<generator object <genexpr> at 0x7fb6ca32fca8>
>>> for i in l:
...     print(i)
... 
4
16
36
64
100

定义生成器的另一种方法:如果一个函数定义中包含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'
... 
>>> s=fib(10)
>>> for i in s:
...     print(i)
... 
1
1
2
3
5
8
13
21
34
55

迭代器

凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
Python的for循环本质上就是通过不断调用next()函数实现的.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值