def fib(a, b, f):
fib必须生成(使用产量)广义Fibonacci序列,a和b是第一和第二元素。F是得到第三个元素的函数,而不是作为正规Fibonacci序列的a+b。使用采取函数(如下图所示)来测试它。
我的代码在下面
def fib(a, b, f):
x = a
y = b
yield x
x, y = y, f(x,y)
fib(x,y,f)
我不知道我的代码有什么问题,当我尝试测试它时,它显示了"TypeError: 'generator' object is not subscriptable"
在中,我有一个无穷无尽的使用Python生成器的序列。但同样的代码在Python3中不起作用,因为它似乎没有next()函数。next函数的等价物是什么?
def updown(n):
while True:
for i in range(n):
yield i
for i in range(n - 2, 0, -1):
yield i
uptofive = updown(6)
for i in range(20):
print(uptofive.next())
我有一个大小<N的列表,我想用一个值将它填充到大小N。
当然,我可以使用下面这样的东西,但我觉得应该有一些东西我错过了:
>>> N = 5
>>> a = [1]
>>> map(lambda x, y: y if x is None else x, a, ['']*N)
[1, '', '', '', '']
假设我有一个函数,它接受生成器并返回第一个n元素的另一个生成器:
const take = function * (n, xs) {
console.assert(n >= 0);
let i = 0;
for (const x of xs) {
if (i == n) {
break;
}
yield x;
i++;
}
};
这样的用法:
const evens = function * () {
let i = 0;
while (true) {
yield i;
i += 2;
}
};
f
我试图在Python3中将一个列表添加到现有的.txt文件中。目前,我有以下代码:
def function(list, new_add):
with open("file.txt", new_add) as file:
for item in list:
file.write("{}\t".format(item))
add_grade(list, "w")
我创造了一个清单:
list = [string1, integer1a, integer1b]
它可以很好地创建一个新的txt文件。但
我使用中描述的构造函数编写了一些代码。不幸的是,Internet 11忽略了构造函数中的任何可迭代参数。我试图快速地尝试重写构造函数(下面的代码),但没有运气(Set.prototype.size返回-“这”不是一个set对象)。
var testSet = new Set([0]);
if (testSet.size === 0) {
//constructor doesnt take an iterable as an argument - thanks IE
var oldProto = Set.prototype
Set = function (iterable
我想做一个高阶函数,它将接受另外两个函数,然后是一组数字,并返回一组通过该函数的数字。听起来很复杂,但实际上并不复杂,下面是我的代码:
#Is_Odd
def is_thodd(n):
if n % 3 == 1:
return True
else:
return False
#Is_Prime
def is_prime(n):
if n < 2:
return False
for f in range(2, int(math.sqrt(n)) + 1):
if n % f == 0:
我有一个巨大的标签字符串列表,这些字符串应该由给定的tag_filter过滤。
返回的联接字符串应该包含20个\n分隔的最大标记。现在的代码是这样的:
tags = Tag.get_tags() #This returns the list of tags strings
return '\n'.join([tag for tag in tags if tag.startswith(tag_filter)][:20])
如何提高它避免扫描所有标签列表后,20个标签是匹配的?
我使用的是Python2.5。
我有一个有很多元素的生成器,比如说 long_generator = (i**2 for i in range(10**1000)) 我想提取第一个n元素(直到最后才明显解析生成器):什么pythonic方式可以做到这一点? 函数iter具有第二个参数,即基于返回值的标记: numbers = iter(lambda:next(long_generator), 81) # but this assumes we know the results 那么会不会有一个基于“迭代”次数的等价物呢?