Python generator 类型
场景:
使用gurobi求解优化问题时,遇到quicksum()函数用法如下:
quicksum(mu[i] for i in range(n))
读着很流畅而且好像并没什么问题欸,但
mu[i] for i in range(n)
返回的又是什么?
看了下quicksum()函数的介绍:
def quicksum(p_list): # real signature unknown; restored from __doc__
"""
ROUTINE:
quicksum(list) PURPOSE:
A quicker version of the Python built-in 'sum' function for building
Gurobi expressions. ARGUMENTS:
list: A list of terms. RETURN VALUE:
An expression that represents the sum of the input arguments. EXAMPLE:
expr = quicksum([x, y, z])
expr = quicksum([1.0, 2*y, 3*z*z])
"""
pass
所以,上述代码返回的是个list?
python console中试了下:
x = [1,2,3]
print (x[i] for i in range(2))
<generator object <genexpr> at 0x000000000449A750>
并不是list欸,是个generator object。
难道说generator object可以赋值给list变量?
查了下generator的相关文章(其中的yeild是关键 ,参考yeild介绍)
然后是generator和list~迭代器的关系
Python关键字yield详解以及Iterable 和Iterator区别
A generator expression can be used whenever a method accepts an
Iterableargument (something that can be iterated over). For example, most Python methods that accept alistargument (the most common type ofIterable) will also accept a generator expression.
In:(x*x for x in range(3))
Out:<generator object <genexpr> at 0x00000000045E8AF8>
In:[x*x for x in range(3)]
Out:[0, 1, 4]
其他的一些补充,关于与for语句的结合:
List comprehension and generator expressions can both contain more than one
forclause, and one or moreifclauses. The following example builds a list of tuples containing allx,ypairs wherexandyare both less than 4 andxis less thany:gurobi> [(x,y) for x in range(4) for y in range(4) if x < y]
[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]Note that the
forstatements are executed left-to-right, and values from one can be used in the next, so a more efficient way to write the above is:gurobi> [(x,y) for x in range(4) for y in range(x+1, 4)]
Python generator 类型的更多相关文章
- Python 变量类型
Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...
- Python变量类型
Python变量类型 变量是存储在内存中的值,因此在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定的内存,并决定什么数据可以被存储在内存中. 因此变量可以指定不同的数据类型, ...
- Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习
#coding=utf-8 __author__ = 'Administrator' #Python变量类型 #Python数字,python支持四种不同的数据类型 int整型 long长整型 flo ...
- Python序列类型
Python序列类型 序列:字符.列表.元组 所有序列都支持迭代 序列表示索引为非负整数的有序对象集合 字符和元组属于不可变序列,列表可变 1)字符 字符串字面量:把文本放入单引号.双引号或三引号中: ...
- Python对象类型及其运算
Python对象类型及其运算 基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = ...
- Python学习笔记(二)-Python文件类型及编程模式
Python环境搭建:linux,Windows... Linux下:[root@localhost StudyPython]# python #进入交互模式Python 2.7.11 (defaul ...
- python动态类型
在python中,省去了变量声明的过程,在引用变量时,往往一个简单的赋值语句就同时完成了,声明变量类型,变量定义和关联的过程,那么python的变量到底是怎样完成定义的呢? 动态类型 python使用 ...
- [Python]基础教程(4)、Python 变量类型
Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...
- 5、Python文件类型
Python文件类型 源代码 Python源代码的文件以"py"为扩展名,由Python程序解释,不需要编译 字节代码 Python源文件经编译后生成的扩展名为"pyc& ...
随机推荐
- Redis面试题记录--缓存双写情况下导致数据不一致问题
转载自:https://blog.csdn.net/lzhcoder/article/details/79469123 https://blog.csdn.net/u013374645/article ...
- 8.读写锁ReadWriteLock
/*ReadWriteLock 读写锁*/ private ReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().loc ...
- [LeetCode] 784. 字母大小写全排列 ☆☆☆(回溯、深度优先遍历)
https://leetcode-cn.com/problems/letter-case-permutation/solution/shen-du-you-xian-bian-li-hui-su-su ...
- 《OAuth2.0协议安全形式化分析-》----论文摘抄整理
---恢复内容开始--- 本篇论文发表在计算机工程与设计,感觉写的还是很有水准的.实验部分交代的比较清楚 本篇论文的创新点: 使用Scyther工具 主要是在 DY模型下面 形式化分析了 OAuth2 ...
- Linux学习笔记(十三)磁盘管理(一):磁盘分区
一.查看磁盘分区使用状况 df [选项] 其中,-l是默认选项 -a 会显示出包括0字节分区在内的所有文件系统分区 -t 后须跟一个参数,这个参数为文件系统的名字,用来在系统中查找属于该文件系统的分区 ...
- Jupyter notebook部署引导
一.简介方面很多博客写得比较好,主要转发几篇: 1.对Jupyter notebook 的整体进行介绍: https://www.itcodemonkey.com/article/6025.html ...
- 安装sass时遇到Failed to build gem native extension
错误信息 执行命令: sudo gem install sass时遇到下面的错误信息 Building native extensions. This could take a while... ER ...
- C++ 输出PPM格式图片文件
PPM简介 学习图形学时为了直观地观察结果,需要输出图片,而PPM是一种最简单的图片格式,非常适合新手使用. PPM文件的内容大概是这样的: 第一行固定为P3,代表写入的是PPM格式的RGB图像,除此 ...
- c++对象模型和RTTI(runtime type information)
在前面已经探讨过了虚继承对类的大小的影响,这次来加上虚函数和虚继承对类的大小的影响. 先来回顾一下之前例子的代码: #include <iostream> using namespace ...
- unittest简单使用的介绍
无论是paython+request接口测试.ui自动化测试等,都常会用到unittest的框架,简单的介绍如下: