我正在寻找一个像样的图像精灵生成器.我试过http://spritegen.website-performance.org/,但它不够"聪明",不足以处理多个图像尺寸,并将它们与图像之间的空白空间合并.
有什么建议???
对于phpdocumentor2,记录作为生成器的方法的最佳方法是什么?
我认为不是@return真的有用yield,但我似乎找不到任何合适的选择.
这只是等待phpdoc迎头赶上的问题吗?
我看到很多生成器函数的例子,但我想知道如何为类编写生成器.可以说,我想把斐波纳契系列写成一个类.
class Fib:
def __init__(self):
self.a, self.b = 0, 1
def __next__(self):
yield self.a
self.a, self.b = self.b, self.a+self.b
f = Fib()
for i in range(3):
print(next(f))
Run Code Online (Sandbox Code Playgroud)
输出:
<generator object __next__ at 0x000000000A3E4F68>
<generator object __next__ at 0x000000000A3E4F68>
<generator object __next__ at 0x000000000A3E4F68>
Run Code Online (Sandbox Code Playgroud)
为什么self.a没有印刷价值?另外,我如何unittest为发电机写信?
我有一个生成器generator和一个方便的方法 - generate_all。
def generator(some_list):
for i in some_list:
yield do_something(i)
def generate_all():
some_list = get_the_list()
return generator(some_list) # <-- Is this supposed to be return or yield?
Run Code Online (Sandbox Code Playgroud)
应该generate_all return还是yield?我希望两种方法的用户都使用相同的方法,即
for x in generate_all()
Run Code Online (Sandbox Code Playgroud)
应该等于
some_list = get_the_list()
for x in generate(some_list)
Run Code Online (Sandbox Code Playgroud) 我的一个朋友问我这段代码:
array = [1, 8, 15]
gen = (x for x in array if array.count(x) > 0)
array = [2, 8, 22]
print(list(gen))
Run Code Online (Sandbox Code Playgroud)
输出:
[8]
Run Code Online (Sandbox Code Playgroud)
其他元素去哪儿了?
我的理解yield from是,它类似于yield从可迭代对象中获取每个项目。然而,我在以下示例中观察到不同的行为。
我有Class1
class Class1:
def __init__(self, gen):
self.gen = gen
def __iter__(self):
for el in self.gen:
yield el
Run Code Online (Sandbox Code Playgroud)
和 Class2 的不同之处仅在于yield将 for 循环替换为yield from
class Class2:
def __init__(self, gen):
self.gen = gen
def __iter__(self):
yield from self.gen
Run Code Online (Sandbox Code Playgroud)
下面的代码从给定类的实例中读取第一个元素,然后在 for 循环中读取其余元素:
a = Class1((i for i in range(3)))
print(next(iter(a)))
for el in iter(a):
print(el)
Run Code Online (Sandbox Code Playgroud)
Class1这会为和产生不同的输出Class2。对于Class1输出是
0
1
2
Run Code Online (Sandbox Code Playgroud)
Class2输出为
0
Run Code Online (Sandbox Code Playgroud)
yield from产生不同行为的背后机制是什么?
Scipy最小化函数(仅用作示例),可以选择在每一步添加回调函数.所以我可以做点什么,
def my_callback(x):
print x
scipy.optimize.fmin(func, x0, callback=my_callback)
Run Code Online (Sandbox Code Playgroud)
有没有办法使用回调函数来创建fmin的生成器版本,这样我才能做到,
for x in my_fmin(func,x0):
print x
Run Code Online (Sandbox Code Playgroud)
似乎可能有一些产量和发送的组合,但我可以想到任何事情.
我只是想知道C#中的随机数生成器是如何工作的.我也很好奇我如何制作一个从1-100 生成随机整数数字的程序.
我的问题是:鉴于提供的(非常简单的)生成器,是否可以将生成器恢复到其原始状态以便再次使用?
var generator = function*() {
yield 1;
yield 2;
yield 3;
};
var iterable = generator();
for (let x of iterable) {
console.log(x);
}
// At this point, iterable is consumed.
// Is there a method for moving iterable back
// to the start point by only without re-calling generator(),
// (or possibly by re-calling generator(), only by using prototype
// or constructor methods available within the iterable object)
// so the following code would work again?
for (let …Run Code Online (Sandbox Code Playgroud) generator ×10
python ×5
yield ×2
c# ×1
coroutine ×1
css-sprites ×1
ecmascript-6 ×1
fibonacci ×1
function ×1
iterator ×1
javascript ×1
numbers ×1
php ×1
php-5.5 ×1
phpdoc ×1
random ×1
return ×1
sprite ×1
yield-from ×1