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

  • 相关阅读:
    动态加载js文件以支持跨域脚本
    获取页面宽高的一些代码
    根据dom对象或其id获取对象位置的代码
    Exchange2007用户用户全部访问权限授权命令及验证脚本
    frame页面地址转向跨域解决方法
    过滤掉多余的重复记录的SQL语句
    读写cookie的方法
    识别移动设备脚本
    winrar打包部署程序
    自己动手搭建MinGW
  • 原文地址:https://www.cnblogs.com/alben-cisco/p/7012675.html
Copyright © 2011-2022 走看看