zoukankan      html  css  js  c++  java
  • 迭代和列表生成式

    当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。

    那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

    from collections.abc import Iterable
    d = {'a': 1, 'b': 2, 'c': 3}
    print(isinstance(d, Iterable))

    如果要对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身

    for i, k in enumerate(d):
        print(i,k)
    0 a
    1 b
    2 c

    列表生成式

    [x * x for x in range(1, 11) if x % 2 == 0]

    还可以使用两层循环,可以生成全排列

    >>>[m + n for m in 'ABC' for n in 'XYZ']
    ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

    列表生成式也可以使用两个变量来生成list

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

    在一个列表生成式中,for前面的if ... else是表达式,而for后面的if是过滤条件,不能带else

    >>> [x if x % 2 == 0 else -x for x in range(1, 11)]
    [-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
  • 相关阅读:
    一种复杂的情感--“外戚”
    追~
    神受的孩子
    不好的习惯
    思杨改编的朝代歌
    siyang入厕
    小思趣事
    今天周三啦~~时光啊
    Python(6)——装饰器
    Python(5)——关于描述符的三种操作方法
  • 原文地址:https://www.cnblogs.com/hustar/p/14067214.html
Copyright © 2011-2022 走看看