zoukankan      html  css  js  c++  java
  • 列表解析2

    list comprehension(列表推倒)
    列表推倒:从一个列表去产生另一个列表

    案例:
    #产生一个0-20的列表
    nums = [n for n in range(0,21)]

    #对nums进行操作,中间的每一个元组*2,构成一个新的列表

    new_nums = []

    for i in nums:
    new_nums.append(i*2)

    操作步骤:
    1、定义一个new_nums的空列表
    2、遍历nums,每一个元素**2
    3、对每一个元素操作后追加到new_nums列表中,最终生成列表new_nums


    使用列表推倒的方法完成此工作:
    new_nums = [ n * 2 for n in nums ]

    每一个列表推倒都可以使用for循环地方法来实现,反之不成立。


    练习:
    随机参数一个包含列表,列表中包含{1-100}范围内任意10个数字,对这个列表进行操作,得出该10个数字内偶数的新列表。

    实现代码——
    from random import randint

    nums = []

    for i in range(10):
    nums.append(randint(1,101))


    #定义一个偶数列表

    even_nums = []

    #通过循环,过滤偶数

    for i in nums:
    if i % 2 == 0:
    even_nums.append(i)

    通过列表推倒,改进代码
    from random import randint

    nums = []

    for i in range(10):
    nums.append(randint(1,101))


    even_nums = [n for n in nums if n %2 == 0]

    print(even_nums)

    进一步改进:
    from random import randint


    nums = [randint(1,101) for i in range(9)]

    even_nums = [n for n in nums if n %2 == 0]

    两个列表合二为一
    from random import randint

    even_nums =[n for n in [randint(1,101) for i in range(9)] if n % 2 ==0]

    这样是不是可读性比较差,那么就在括号间进行换行
    even_nums =
    [
    n
    for n in
    [randint(1,101)
    for i in range(9)
    ]
    if n % 2 ==0
    ]
    这样是不是清晰一点了呢~

  • 相关阅读:
    抽象类和接口的区别
    Overload和Override的区别
    final和finally和finalize的区别
    C#设计模式学习笔记:简单工厂模式(工厂方法模式前奏篇)
    C#设计模式学习笔记:(1)单例模式
    C#设计模式学习笔记:设计原则
    C#加密与解密(DESRSA)学习笔记
    C# IO流与文件读写学习笔记
    C#序列化与反序列化学习笔记
    C#索引器学习笔记
  • 原文地址:https://www.cnblogs.com/alben-cisco/p/7012675.html
Copyright © 2011-2022 走看看