zoukankan      html  css  js  c++  java
  • 列表推导式

    列表推导式的知识点:

    1.列表推导式就是利用其他列表创建新的列表。

    2.支持if条件判断

    3.可以使用多个for

    列表推导式是利用其他列表创立新的列表,它的工作方式类似于for循环。

    就像这样:

    >>> [x*x for x in range(10)]
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

    for循环是这样:

    for m in range(10):
        print(m**2)

    列表表推导式还支持if判断

    >>> [x*x for x in range(10) if x%3 == 0]
    [0, 9, 36, 81]

    列表推导式可以支持多个for语句

    >>> [(x,y)for x in range(3)for y in ['kebi','maoxian','xiaoniao']]
    [(0, 'kebi'), (0, 'maoxian'), (0, 'xiaoniao'), (1, 'kebi'), (1, 'maoxian'), (1, 'xiaoniao'), (2, 'kebi'), (2, 'maoxian'), (2, 'xiaoniao')]

    相对于for循环是这样:

    result = []
    name = ['kebi','maoxian','xiaoniao']
    for x in range(3):
        for y in name:
            print((x,y))

    有个不错的例子:有两个新的列表,要求把首字母相同的元素放在一起创建一个新的列表。

    就像下面这样:

    >>> girls = ['alice','bernice','clarice']
    >>> boys = ['chris','arnold','bob']
    
    >>> [b+'+'+g for b in girls for g in boys if b[0] == g[0]]
    ['alice+arnold', 'bernice+bob', 'clarice+chris']

    在列表里面写条件就是列表推导式,在元祖里面会怎样了?

    >>> (x*y for x in [1,2,3] for y in (4,5,6))
    <generator object <genexpr> at 0x7f254bae0d00>    :返回的是一个可迭代的对象。
    >>> for i in (x*y for x in [1,2,3] for y in (4,5,6)):
    ...     print(i)
    ... 
    4
    5
    6
    8
    10
    12
    12
    15
    18
  • 相关阅读:
    atcoder做题记录
    CSP-S2021题解
    记录近期JAVA后端开发面试总结
    技术文章系列汇总(csdn转载)
    个人技术文章系列汇总(简书)
    个人技术文章系列汇总(csdn原创)
    解密Kafka吞吐量高的原因
    Java 常见面试题整理
    restemplate调用失败提示 处理方法
    Keil MDK忽略警告:文件末尾空白行警告
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/7729200.html
Copyright © 2011-2022 走看看