• 列表解析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
    ]
    这样是不是清晰一点了呢~

  • 相关阅读:
    C#随机数字生成的一种方法
    SqlServer2012自增主键跳跃增长的问题解决方案
    Mysql5.7初始化成空密码或随机密码的方式
    StyleCop的常见错误
    数据库同步相关的SQL语句
    Linux Shell角本中的条件判断
    Linux(CentOS)中使用Mono+jexus部署Asp.net4.5网站
    Mina.Net实现的UDP多路广播
    Linux CentOS 6.6安装JDK1.7
    linux 常用命令
  • 原文地址:https://www.cnblogs.com/alben-cisco/p/7012675.html
Copyright © 2020-2023  润新知