美文网首页
高级特性

高级特性

作者: Farewell_lpf | 来源:发表于2019-05-28 11:04 被阅读0次
1.切片
2.迭代

默认dict迭代的是key

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

如果迭代value 可以使用for value in d.values( )
同时迭代key和value,可以使用 for k,v in d.items()
如果要对list实现下表循环,python内置的enumerate函数可以把list变成索引元素对。

>>> for i, value in enumerate(['A', 'B', 'C']):
...     print(i, value)
...
0 A
1 B
2 C
3.列表生成式
可以直接创建一个列表
[x*x for x in range(1,11)]
[1,4,9.....,100]
加上if判断
[x*x for x in range(1,11) if x%2 == 0]
二层循环,可以生成全排列
[m+n for m in "ABC" for n in "XYZ"]
使用多个变量
[k +'='+v for k,v in d.itens()]
将list中所有的字符串变成小写
[s.lower() for s in L]

判断变量是不是字符串
isinstance(x,str)

4.生成器(generator)

列表生成式,可以直接创建一个列表,但是受内存限制,列表容量肯定是有限的,而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅需访问前面几个元素,那后面的绝大多数元素占用的空间将白白的浪费了。
创建一个generator
1.只要把一个列表生成式的[]改成()

>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x1022ef630>
我们可以通过next()函数获得generator的每一个元素
>>> next(g)
0
>>> next(g)
1
>>> next(g)
4
>>> next(g)

generator保存的是算法,每次调用next(g),就计算出g的下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。
当然,上面这种不断调用next(g)实在是太变态了,正确的方法是使用for循环,因为generator也是可迭代对象:

>>> g = (x * x for x in range(10))
>>> for n in g:
...     print(n)
... 
0
1
4

2.generator的另一种方法。如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator:

def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return 'done'
5.迭代器

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

Python的for循环本质上就是通过不断调用next()函数实现的

相关文章

  • 使用Netty,我们到底在开发些什么?

    您可能感兴趣的文章: 大数据成神之路系列:Java高级特性增强-集合Java高级特性增强-多线程Java高级特性增...

  • 高级特性

    1.切片:取一个list或tuple的部分元素是非常常见的操作,比如说取list中的前n个元素,我们用循环来实现这...

  • 高级特性

    1.切片(Slice)# python提供了切片(Slice)操作符,能大大简化取数据操作L = ['aa','b...

  • 高级特性

    一、切片(Slice)对list、tuple、str进行截取的方法 L=[1,1,42,65,7,3,8] 1.L...

  • 高级特性

    1. 切片 Python提供了切片(Slice)操作符: ============================...

  • 高级特性

    切片 迭代 列表生成式 生成器 在Python中,一边循环一边计算的机制,称为生成器。 迭代器 凡是可作用于for...

  • 高级特性

    切片(从列表中取出元素) 循环: 相比之下使用Python的Slice操作符可以大大简化。类似于MATLAB的向量...

  • 高级特性

  • 高级特性

    切片 取指定索引范围的操作。 迭代 只要是可迭代对象,无论有无下标,都可以迭代 列表生成式 可以用来创建list的...

  • 高级特性

    高级特性:代码越少,开发效率越高! 课题:构造一个1,3,5,7,9,...,99的列表。 普通方法: L = [...

网友评论

      本文标题:高级特性

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