标签: generator

为什么不能在递归函数中使用yield

我正在使用递归来获取列表的排列.这是我写的,但yield版本不起作用:

def test_permutation_rec():
    print "test 2"
    permutation_rec2([1,2,3],[])     
    print "test 1"
    for one in permutation_rec1([1,2,3],[]):
        print "one:",one 

def permutation_rec1(onelist,prelist):  
    if onelist == [] :
        print prelist
        yield prelist

    lenlist= len(onelist)
    for i, oneitem in enumerate(onelist) :
        leftlist = [onelist[j] for j in range(0,lenlist) if j != i]
        permutation_rec1(leftlist,prelist + [oneitem])

def permutation_rec2(onelist,prelist):
    if onelist == [] :
        print prelist

    lenlist= len(onelist)
    for i, oneitem in enumerate(onelist) :
        leftlist = [onelist[j] for j in range(0,lenlist) if j != i]
        permutation_rec2(leftlist,prelist …
Run Code Online (Sandbox Code Playgroud)

python algorithm recursion yield generator

0
推荐指数
1
解决办法
152
查看次数

在scikit-learn中使用python生成器

我想知道是否以及如何使用python生成器作为scikit-learn分类器的.fit()函数的数据输入?由于数据量巨大,这似乎对我有意义.

特别是我即将实施随机森林方法.

问候K.

python generator random-forest scikit-learn

0
推荐指数
1
解决办法
2720
查看次数

Python函数返回生成器而不是列表

我想在Python中使用素数,因此使用函数来创建Sieve of Eratosthenes:

def primes(limit):
    a = [True] * limit
    a[0] = a[1] = False

    for (i, isprime) in enumerate(a):
        if isprime:
            yield i
            for n in range(i*i, limit, i):
                a[n] = False
    return list(a)
Run Code Online (Sandbox Code Playgroud)

在我看来,这个函数肯定应该返回一个列表但是当我这样做时print(primes(1000))我只得到<generator object primes at 0x0000000002C5C558>输出.当使用print(list(primes(1000)))一切按预期工作时(打印质数列表).

我错过了什么?

为什么函数返回生成器而不是列表?

python list generator python-3.x

0
推荐指数
1
解决办法
891
查看次数

在Python中使用yield?

我有这个代码:

def generator(n):
    list_of = range(1,n+1)
    for i in list_of:
        if i % 7 == 0:
            yield i

print generator(100)
Run Code Online (Sandbox Code Playgroud)

这应该打印给定范围内可被整除的所有数字7,但输出却是<generator object generator at 0x1004ad280>.

此外,yield我的文本编辑器(KOD)中的单词不会像所有保留字一样以天蓝色突出显示,而是以白色显示,是不是很好?

python yield generator

0
推荐指数
1
解决办法
138
查看次数

猜测游戏的随机发生器

我一直在寻找比我自己更好的解决方案,而且我真的找不到一个我理解或对我有用的解决方案.

我做了一个简单的游戏,计算机随机生成一个数字然后你猜一个数字,如果它更高,计算机说更高,等等..

问题是我的随机生成的数字,查找有关的信息很多后<random>,uniform_int_distributiondefault_random_engine.我发现计算机生成一个随机数,但如果再次运行程序,将生成相同的随机数.

我的解决方案

uniform_int_distribution<unsigned> u(0,100); // code to randomly generate numbers between 0 and 100
default_random_engine e; // code to randomly generate numbers

size_t userInput; // User input to find out where to look in the vector
vector<int> randomNumbers; //vector to hold the random numbers
unsigned start = 0, ending = 101, cnt = 0; // used in the game not important right now



cout << "Please enter a number between …
Run Code Online (Sandbox Code Playgroud)

c++ random generator

0
推荐指数
1
解决办法
451
查看次数

访问收益率收益

有没有办法从构建自身的方法中循环访问IEnumerable<T>正在构建的集合?yield returnIEnumerable

愚蠢的例子:

Random random = new Random();

IEnumerable<int> UniqueRandomIntegers(int n, int max)
{
    while ([RETURN_VALUE].Count() < n)
    {
        int value = random.Next(max);
        if (![RETURN_VALUE].Contains(value))
            yield return value;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# generator

0
推荐指数
1
解决办法
261
查看次数

如何在python中组合来自两个生成器的元组

我想在一个for循环中使用两个生成器.就像是:

for a,b,c,d,e,f in f1(arg),f2(arg):
    print a,b,c,d,e,f
Run Code Online (Sandbox Code Playgroud)

其中a,b,c,d和e来自f1,f来自f2.由于空间限制,我需要使用yield运算符.

但是上面的代码不起作用.由于某种原因,它继续从f1获取值(对于所有六个变量),直到它耗尽,然后开始从f2获取值.

如果可能,请告诉我,如果没有,有任何解决方法.先感谢您.

python generator

0
推荐指数
1
解决办法
385
查看次数

Python意外的StopIteration

这是我的代码

class A:
    pass

def f():
    yield A()

def g():
    it = f()
    next(it).a = next(it, None)

g()
Run Code Online (Sandbox Code Playgroud)

产生StopIteration错误,由...引起next(it).a = next(it, None).为什么?

文档说如果提供了默认值,next函数不会提高StopIteration,我希望它从生成器(A实例)获取第一个项目并将a属性设置为None.

python generator operator-precedence next assign

0
推荐指数
2
解决办法
2487
查看次数

快速检查,使用函数定义任意实例,其结果取决于其参数

我有一个函数arbExample来生成一个随机Example数据类型,它取决于许多函数.

我试图通过做一些属性测试quickCheck prop_example,问题是我不知道如何定义一个Arbitrary实例Example使用arbExample.

我喜欢quickCheck prop_example在指定使用的Gens数据结构时运行arbExample.

data Example = Example
    { myInt  :: Int 
    , myList :: [String]
    } deriving (Show)

data Gens =  Gens
    { gen1 :: Gen Int
    , gen2 :: Gen String }

arbExample :: Gens -> Gen Example
arbExample gens = do 
    i  <- gen1 gens 
    xs <- vectorOf i (gen2 gens)
    return Example{myInt=i, myList=xs}

prop_example :: Example -> …
Run Code Online (Sandbox Code Playgroud)

testing haskell generator quickcheck

0
推荐指数
1
解决办法
414
查看次数

如何摆脱使用后随机生成的字母?

我正在编写一个程序,要求我从字母表中生成随机字母并将其分配给其他字母.(这是一个加密程序).问题是,一旦我生成了前几个字母,就会再生成一些字母.

例如,我想让a = c(随机生成的字母)但是现在使用了c,我不希望其他25个字母等于c.所以我不想要b = c我不知道如何去做,因为它似乎很容易,但我无法做到这一点.

这是我的代码.

for (int i = 0; i<26; i++)
        {
            Random r = new Random();
            cipherArray[i] =(char)(cipherText.charAt(r.nextInt(cipherText.length())));
        }
            return cipherArray;
Run Code Online (Sandbox Code Playgroud)

感谢任何帮助,谢谢.

java random generator

0
推荐指数
1
解决办法
85
查看次数