精华内容
下载资源
问答
  • 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。...一、列表推导式 1、使用[]生成list 基本格式 1 [表达式f...

    推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:

    • 列表(list)推导式

    • 字典(dict)推导式

    • 集合(set)推导式

    一、列表推导式

    1、使用[]生成list

    基本格式

    1
    [表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件]

    例1:  过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母

    1
    2
    3
    >>> names = ['Bob','Tom','alice','Jerry','Wendy','Smith']    
    >>> [name.upper() for name in names if len(name)>3]  
    ['ALICE', 'JERRY', 'WENDY', 'SMITH']

    更多示例:http://www.jb51.net/article/67157.htm



    生成间隔5分钟的时间列表序列:

    1
    ["%02d:%02d" %(h,m) for h in range(0, 24) for m in range(0, 60, 5)]


    二、字典推导式

    字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。直接举例说明:

    1
    2
    3
    4
    = ["%02d:%02d" %(h,m) for in range(024for in range(0605)]
    = {key:0 for key in s}
    print(d)
    print(sorted(d.key()))

    更多示例:http://www.cnblogs.com/tkqasn/p/5977653.html


    三、集合推导式

    它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。

    例一:

    squared = {x**2 for x in [1, 1, 2]}
    print(squared)
    # Output: set([1, 4])



    本文转自 326647452 51CTO博客,原文链接:http://blog.51cto.com/svsky/1945844,如需转载请自行联系原作者
    展开全文
  • python中列表推导式用于使用其他列表创建一个新列表。其基本形式为: [表达式 for 变量 in 列表]如:# 想得到1-10的平方组成的listlist_1_10 = [x**2 for x in range(1,11)]print(list_1_10)输出为:复杂一点的列表...

    python中列表推导式用于使用其他列表创建一个新列表。

    其基本形式为: [表达式 for 变量 in 列表]

    如:

    # 想得到1-10的平方组成的list

    list_1_10 = [x**2 for x in range(1,11)]

    print(list_1_10)

    输出为:

    955639-20180830170947620-1728210932.png

    复杂一点的列表表达式可以对原列表进行变换和筛选。

    如:

    # 想得到1-10中为偶数的平方组成的list

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

    print(example)

    输出为:

    955639-20180830171739755-1002609497.png

    以及对多重嵌套的list进行变换筛选。

    如:

    # 想得到多重嵌套中的数是2的倍数的平方组成的list

    example2 = [[1,2,3],[4,5,6],[7,8,9],[10]]

    example3 = [j**2 for i in example2 for j in i if j%2 == 0]

    print(example3)

    输出为:

    955639-20180830172501919-2089965505.png

    如:

    # 想得到多重嵌套的list中一重嵌套中list长度大于1的list中的数为2的倍数的平方组成的list

    example4 = [[1,2,3],[4,5,6],[7,8,9],[10]]

    exmaple5 = [j**2 for i in example2 if len(i)>1 for j in i if j%2 == 0]

    print(exmaple5)

    输出为:

    955639-20180830172736501-1228039844.png

    展开全文
  • 先定义一个列表a a = [1, 2, 3, 4, 5, 6, 7, 8] ...# 列表推导 d = [i**2 for i in a] #集合推导 e = {i**2 for i in a} #元组推导 f = (i**2 for i in a) print(type(d)) print(type(e)) print(typ...

    先定义一个列表a

    a = [1, 2, 3, 4, 5, 6, 7, 8]
    1
    a = [1, 2, 3, 4, 5, 6, 7, 8]

    # 列表推导
    d = [i**2 for i in a]

    #集合推导
    e = {i**2 for i in a}

    #元组推导
    f = (i**2 for i in a)

    print(type(d))

    print(type(e))

    print(type(f))
    -------------------------
    输出:
    <class 'list'>
    <class 'set'>
    <class 'generator'>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    前两个是列表和集合,这很正常,最后一个用的元组,却是生成器(Generator),这是因为元组是不可变的。
    要怎么访问里面的元素呢?很简单:

    a = [1, 2, 3, 4, 5, 6, 7, 8]
    f = (i**2 for i in a)
    for n in f:
        print(n)
    print(type(f))
    ---------------------------------------------
    输出:
    1
    4
    9
    16
    25
    36
    49
    64
    <class 'generator'>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    推导式还可以进行条件判断:(当a中的元素大于等于5时候才计算)

    a = [1, 2, 3, 4, 5, 6, 7, 8]
    d = [i**2 for i in a if i >=5]
    print(d)
    ---------------------
    输出:
    [25, 36, 49, 64]
    1
    2
    3
    4
    5
    6
    推导式第一个i**2,i的平方还可以用函数替代。(小提示:i的立方可以写成i***3)。当列表a中的元素大于等于6的时候,计算它的平方,否则计算它的立方:

    a = [1, 2, 3, 4, 5, 6, 7, 8]
    def conpute(x):
        if(x >= 6):
            return x**2
        return x**3
    f = [conpute(i) for i in a]
    print(f)
    ----------------------------------------
    输出:
    [1, 8, 27, 64, 125, 36, 49, 64]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    将数字或者字符串放进列表中:

    a = [1, 2, 3, 4, 5, 6, 7, 8]
    def conpute(x):
        if(x >= 6):
            return x**2
        return x**3
    d = (conpute(i) for i in a)
    x = []
    for n in d:
        x.append(n)
    print(x)
    ---------------------------------------------------
    输出:
    [1, 8, 27, 64, 125, 36, 49, 64]
    ————————————————
    版权声明:本文为CSDN博主「一场丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_40698401/article/details/82469492

    展开全文
  • 一、列表推导式通常原则只用来创建新列表,并尽量保持简短,如果列表代码超过了两行,就要考虑是不是得用for循环重写了例子1# 1、创建新列表new_list = [i for i in range(10)]print(new_list)运行结果:F:\virtual...

     一、列表推导式

    通常原则只用来创建新列表,并尽量保持简短,如果列表代码超过了两行,就要考虑是不是得用for循环重写了

    例子1

    # 1、创建新列表new_list = [i for i in range(10)]print(new_list)

    运行结果:

    F:\virtualEnvironment\venv\Scripts\python.exe [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]Process finished with exit code 0

    例子2

    # 1、根据变量新建列表# 2、ord() 内置函数,显示返回对应的 ASCII 数值,或者 Unicode 数值variable = 'asdfghjkl'var_list = [ord(j) for j in variable]print(var_list)

    运行结果:

    F:\virtualEnvironment\venv\Scripts\python.exe [97, 115, 100, 102, 103, 104, 106, 107, 108]Process finished with exit code 0

    例子3

    # 1、取出字典中的value值variable_dict = [{'key': 55}, {'key': 66}, {'key': 11}, {'key': 22}, {'key': 33}]var_list_one = [k['key'] for k in variable_dict]print(var_list_one)

    运行结果:

    F:\virtualEnvironment\venv\Scripts\python.exe [55, 66, 11, 22, 33]Process finished with exit code 0

    例子4

    # 1、列表推导计算笛卡尔积colors, sizes = ['black', 'white'], ['S', 'M', 'L']shirts = [(color, size) for color in colors for size in sizes]print(shirts)

    运行结果:

    F:\virtualEnvironment\venv\Scripts\python.exe[('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')]Process finished with exit code 0

    二、生成器表达式

    生成器表达式 

    • 虽然列表推导也可以处理元组,数组或者其他类型,但是生成器表达式是更好的选择 

    • 生成器的表达式语法和列表推导的差不多,只不过是把中括号换成了圆括号而已

    variable_one = 'qwertyui'generate_one = (v for v in variable_one)print(generate_one)  # 创建的是生成器的对象

    运行结果:

    F:\virtualEnvironment\venv\Scripts\python.exe object  at 0x000002F8CCE07748>Process finished with exit code 0

    例子2

    variable_two = 'qwertyui'generate_two = tuple(v for v in variable_two)  # tuple可以换成list和set;不能换成dictprint(generate_two)

    运行结果:

    F:\virtualEnvironment\venv\Scripts\python.exe ('q', 'w', 'e', 'r', 't', 'y', 'u', 'i')Process finished with exit code 0

    三、生成器表达式和列表推导式的优缺点

    生成器是逐个地产出元素,而不是先建立一个完整的列表,再把这个列表传递到某个构造函数里

    • 对于生成器表达式, 只有你需要的时候它才会求值, 这也是和列表推导的区别, 列表推导只要你运行, 创建列表后一直往里面塞,直到值被塞完 

    • 生成器表达式不会一直塞, 而当你调用第一个函数的时候, 他把相应的先求出来, 然后停止, 等你下一次调用, 这个就完美符合我们的预期了.

    •  列表推导式

      • 优点:编写简单,运行速度快 

      •  缺点:针对大数据处理的话,内存会造成很大的压力

    •  生成器表达式

      • 优点:对大数据量处理,非常有用,不会占内存        

      • 缺点:生成器表达式是只遍历一次

    variable_two = 'qwertyui'def function():    # generate_one = tuple(v for v in variable_two)  # 创建后,会调一次执行一次    # return generate_one    var_list = [j for j in variable_two]             # 创建后,会一次性执行完,然后结束    return var_listprint(function())

    生成器表达式视频展示:

    通过上面的视频,可以看出,先创建的迭代对象,然后每调用一次,才会执行一次,不会出现创建后对象后,一股脑的全部执行完。

    列表推导式视频展示:

    通过上面的视频,可以看出,在创建对象后,然后一股脑的全部执行完,不会出现调一次执行一次。


    小小总结可能会解决你的问题,也可能解决不了你的问题,但还是希望对您有所帮助,感谢阅读,如有疑义,欢迎来扰!未完待续…

    一直都在努力变好中,希望您也是,加油!7f0715c772e69af7a740d4ec19e7879d.png

    展开全文
  • 精讲列表推导式

    2020-11-02 18:35:17
    精讲列表推导式 Python里面有个很棒的语法糖(syntactic sugar),它就是 list comprehension ,有人把它翻译成“列表推导式”,也有人翻译成“列表解析式”。名字听上去很难理解,但是看它的语法就很清晰了。虽然...
  • 列表推导式(有的叫列表解析)f() for i in l 在应用时需要用方括号或圆括号括起来,它不是for循环,后面不带冒号(:)。其中l是序列(range()、列表、元组、字典等),i是序列l中的元素,f()是与i有关的函数或...
  • python列表推导式

    2019-09-05 20:20:08
    列表推导式就是提供了一种简明扼要的方法来创建列表,它的基本的样式就是在括号里面,利用for语句,循环生成列表,可以在循环中加入对要生成的数据进行判断,如 【列表推导】 res = [x for x in range(10) if x % 2 ...
  • python:列表推导式

    2019-09-26 21:35:37
    python中有种独特的语法:推导式,可以将代码压缩到1行,但是不使用也不影响。 有三种:列表、字典、集合(注意没有元组推导式) ...# 列表推导式语句用[]包围,[]中先执行for循环语句,将每次循环取得的值再执行f...
  • 题目要求:生成如下列表[[0,0,0,0,0,],[0,1,2,3,4,],[0,2,4,6,8,],[0,3,6,9,12,]](考察列表生成和基本逻辑推理)方法1:list1 =[]for in range(4):temp=[]for j in range(5):temp.append(j*i)list1.append(temp)...
  • 题目要求:生成如下列表[[0,0,0,0,0,],[0,1,2,3,4,],[0,2,4,6,8,],[0,3,6,9,12,]](考察列表生成和基本逻辑推理)方法1:list1 =[]for in range(4):temp=[]for j in range(5):temp.append(j*i)list1.append(temp)...
  • python的列表推导式

    2020-01-02 23:35:17
    列表推导式: 作用:用简易方法生成列表 语法: [表达式 for 变量 in 可迭代对象] 或者 [表达式 for 变量 in 可迭代对象 if 真值表达式] 1、生成下列列表: [1, 4, 9, 16, 25, .... 81] >>> F = [ ] >...
  • Python中的列表推导式

    2019-08-07 08:43:53
    Python中的列表推导式 优点:可以简化代码 例子: # 打印出1-10之间的偶数 li = [] for i in range(1,11): if i % 2 ==0: li.append(i) print(li) # 第二种方法使用列表推导式 # 优点是可以简化代码 ...
  • python-列表推导式实例

    2020-08-05 21:46:49
    本文主要分享python中列表推导式的使用,话不多说,直接举例 例1:过滤出长度大于3的人名 name = ['tom','lily','jacks','Pe','Steven'] 方法1:用最常见的for循环 new_name = [] for x in name: if len(x)>3: ...
  • 所谓的列表推导式,就是指的轻量级循环创建列表。 格式: 列表推导式的常见形式: my_list = [ item for item in iterable] my_list: 列表名 (变量名, 属于标识符) item: 将要存放到列表中的内容 for ...
  • 列表推导式 列表推导式:为了快速生成一个列表。 格式一、 变量 = [生成数据的规则 for 临时变量 in ***] (每次循环创建新的数据) list1 = [i for i in range(5)] print(list1) # [0, 1, 2, 3, 4] list2 = ['...
  • 列表解析: >>> (i for i in range(1,10)) <generator object <genexpr> at 0x7f54ee10ca98> >>> [i for i in range(1,10)] [1, 2, 3, 4, 5, 6, 7, 8, 9] >>>
  • # 2,用列表推导式做下列小题# 1)过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母# lst=['abc','asfg','ad','ap']# print([i.upper() for i in lst if len(i)>=3 ])#(2)求(x,y)其中x是0-5之间的偶数,y是...
  • 一、如有两个list,分别为: a = [1,2,3,4,5,6]b = ["a","b","c","d","e","f"]用python来实现 ['a1', 'b2',...下面我用列表推导式来实现db = [str(x) +str(y) for x,y in zip(b,a)]print(db) 二、实现对两个...
  • 一、三元表达式 条件成立时的返回值 if 条件 else 条件不成立时的返回值 x = 10 y = 20 print(f"x if x > y else y: {x if x >...二、列表推导式 [expression for item1 in iterable1 if condit...
  • # 2,用列表推导式做下列小题 # 1)过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 # lst=['abc','asfg','ad','ap'] # print([i.upper() for i in lst if len(i)>=3 ]) #(2)求(x,y)其中x是0-5之间的...
  • 和列表一样,列表推导式也采用方括号[]表示,并且用到了一个简写版的for循环,第一部分是一个生成结果列表元素的表达式,第二部分是一个输入表达式上的循环。阅读理解列表表达式的推荐做法是先从里面的for循环开始,...
  • 目录 三元表达式 列表推导式 字典生成式 生成器 生成器表达式 三元表达式 {条件成立时的返回值 if条件 else返回值} 列表推导式 print(F"[i for i in range(10)]: {[i for i in range(...
  • 1.基本形式 a = [x for x in range(0, 10)] print(a) 打印结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2.在循环过程中使用if 取出元素后经过if条件判断 a = [x for x in range(0, 10) if x ...3.多个for循环,等价于多个f...
  • Python2和Python3中列表推导式的不同 python2 >>> x = 'my girl' >>> lst = [x for x in 'hello'] >>> x 'o' 可以看到x的值被覆盖了 来看python3 python3 >>> x = 'my girl' &...
  • Python中的if elif else结构通常如下:if cond1:a...结论就是,将上述结构改为:非列表: 结果甲 if 条件甲 else 结果乙 if 条件乙 else 结果丙列表推导式: [结果甲 if 条件甲 else 结果乙 if 条件乙 else 结果丙 f...
  • 文章目录列表推导式(语法糖)使用方法使用方式推广生成器使用方法 列表推导式(语法糖) 初看列表推导式可能会一头雾水,对词语法的可读性表示质疑,一旦理解语法糖后,你就会感觉出他那简短语句中的魅力。 使用...
  • # 字符串类型推导式,数据类型里面的元素必须是字符串 s = "|" print(s.join(i for i in ['hello','world','lixin'])) print(s.join(['hello','world','...#列表推导式 import random print([random.randint(1,5) f.

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 183
精华内容 73
关键字:

列表推导式f