小编Phi*_*l H的帖子

有没有更简洁的方法来获得第一次出现的东西?

我有一个列表,其中包含许多内容:

lista = ['a', 'b', 'foo', 'c', 'd', 'e', 'bar']
Run Code Online (Sandbox Code Playgroud)

我想获得列表中第一个满足谓词的项目len(item) > 2.有没有一种更简洁的方法来做到这一点而不是itertools的dropwhile和next?

first = next(itertools.dropwhile(lambda x: len(x) <= 2, lista))
Run Code Online (Sandbox Code Playgroud)

我最初使用[item for item in lista if len(item)>2][0]过,但这需要python首先生成整个列表.

python iterator python-itertools

2
推荐指数
1
解决办法
206
查看次数

惯用F#un-pairwise?

我们可以去从seq<float>seq<float * float>Seq.pairwise.

但是如果有一系列同质元组,我该如何回到序列?

我考虑过

someSeq |> Seq.map (fun a b -> seq { yield a; yield b })
Run Code Online (Sandbox Code Playgroud)

但这给了我签名

seq<float * float> -> seq<(float * float -> seq<float * float>)>
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了什么......

f# sequence

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

非常简单的数学游戏的答案总是错误的 - Python

这是我的脚本:

from random import *
from turtle import *

while True: 
    r1 = randint(1,20)
    r2 = randint(1,20)

    # ... ask the question ... then

    a = textinput("Answer?", "")

    if a == r1 * r2:
        write("Well done", font = ("Comic Sans MS", 30, "bold"))
    else:
        write("WRONG", font = ("Comic Sans MS", 30, "bold"))
Run Code Online (Sandbox Code Playgroud)

游戏很简单.它会选择过于随机的数字,并要求您将它们相乘.你得到答案,你的分数上升.得分错误你的分数下降.当我输入正确的答案时,它仍然出现"错误"我想我可能正在做不同的ifs,或者因为随机数而可能无法正常工作.有没有人知道我的脚本有什么问题.谢谢 :)

python math if-statement python-3.x

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

C - 以不同的排列方式打印星形图案

我的作业需要使用for循环打印出星形图案,如下所示:

!!!!!
!!!!
!!!
!!
!
Run Code Online (Sandbox Code Playgroud)

这是我的循环:

    int i, j;
    for(i=5;i<=1;i--)
    {
        for(j=1;j<=i;j++)
        {
            printf("!");
        }
        printf("\n");
    }
Run Code Online (Sandbox Code Playgroud)

实际上我已经成功打印出如下图案:

! 
!! 
!!! 
!!!! 
!!!!!
Run Code Online (Sandbox Code Playgroud)

通过以下循环:

    int i, j;
    for(i=1;i<=5;i++)
    {
        for(j=1;j<=i;j++)
        {
            printf("!");
        }
        printf("\n");
    }
Run Code Online (Sandbox Code Playgroud)

现在我很困惑为什么无法打印模式1,因为没有找到错误.当我继续运行程序时,输出窗口也会停止运行.

我的Xcode是Ver 4.4.1

c

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

具有CWinThread指针数组的WaitForMultipleObjects

我有一个循环生成线程通过AfxBeginThread,它将CWinThread指针存储在一个数组中.在每次迭代中,我检查线程是否为null并将线程的句柄存储在另一个数组中.

const unsigned int maxThreads = 2;
CWinThread* threads[maxThreads];
HANDLE* handles[maxThreads];
for(unsigned int threadId=0; threadId < maxThreads; ++threadId)
{
    threads[threadId] = AfxBeginThread(endToEndProc, &threadId,
                                            0,0,CREATE_SUSPENDED);
    if(threads[threadId] == NULL) 
    {
        // die carefully
    }
    threads[threadId]->m_bAutoDelete = FALSE;
    handles[threadId] = &threads[threadId]->m_hThread;
    ::ResumeThread(handles[threadId]);
}

DWORD result = ::WaitForMultipleObjects(maxThreads, handles[0], 
                                            TRUE, 20000*maxThreads);
Run Code Online (Sandbox Code Playgroud)

WaitForMultipleObjects总是返回WAIT_FAILED,并GetLastError产生6无效句柄.AfxBeginThread返回的测试不足以保证线程是成功创建的,并且句柄有效,或者在WaitForMultipleObjects调用之前句柄变得无效,我认为可以通过设置m_bAutoDelete来阻止它FALSE.

是否有更好的方法在多个线程创建时等待多个线程AfxBeginThread

请注意,它很好maxThreads=1.

c++ winapi mfc multithreading

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

谓词函子继承自unary_function,这不是一个带有1个参数的函数

我有一个继承自unary_function的仿函数类:

template<class T>
class Matcher : public std::unary_function<T, bool>
{
private:
    int m_match;

public:
    Matcher(int valToMatch) : m_match(valToMatch) { };
    bool operator() (T toTest)
    {
        return T.prop == m_match;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用以下某项功能的功能:

void DoStuff(std::unary_function<ThisType, bool> & pred, 
             vector<ThisType> & stuffToTest)
{
    for(vector<ThisType>::iterator it = stuffToTest.begin();
        it != stuffToTest.end(); ++it)
    {
        if(pred(*it))      // <<< Compiler complains here
        {
             // do stuff
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

原始呼叫功能:

Matcher myMatcher<ThisType>(n);
// have vector<ThisType> myStuff
DoStuff(myMatcher, myStuff);
Run Code Online (Sandbox Code Playgroud)

据我所知,我有一个模板化仿函数,我正在构建一个具有ThisType类型的实例,我将其传递给期望unary_function参数的函数,并使用ThisType实例调用.

但是编译器抱怨说"术语不会评估为带有1个参数的函数".

我错过了什么?

c++ stl predicate functor

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