小编the*_*eye的帖子

添加领先的Zero Python

我想知道是否有人可以帮助我在数字唱歌时为这个现有字符串添加一个前导零(例如1-9).这是字符串:

str(int(length)/1440/60)
Run Code Online (Sandbox Code Playgroud)

python string

23
推荐指数
3
解决办法
4万
查看次数

TypeError:pattern.test不是函数

我正在写一个包含大量javascript的注册表单.在编写基本功能以检查某些字符串的格式时,我遇到了这个问题(我试图自己解决它,但没有运气).在这个简化版本中,我有三个功能:一个用于检查电话号码的格式,第二个用于检查电子邮件的格式,第三个用于组合这两个功能以使其更清晰.这是代码:

<html>
<head>
    <meta charset="utf-8">
    <script>
        function filterPhone(phone){
            var pattern = "/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/";
            return pattern.test(phone);
        }

        function filterEmail(email) {
            var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
            return regex.test(email);
        }

        function checkForm(){
            var puh = document.getElementById("puh").value;
        var email = document.getElementById("email").value;
            if(filterPhone(puh) && filterEmail(email)){
                alert("It works");
                return true;
            } else {
                alert("Check the format!");
                return false;
            }
        }
    </script>
</head>
<body>
<form method="post" action="" name="regForm" onsubmit="return checkForm()">
    <input type="text" name="puh" id="puh" placeholder="Phonenumber"><br>
    <input type="text" name="email" id="email" placeholder="Email address"><br>
    <input type="submit" value="Check!">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我只使用函数filterEmail它工作正常,但当我同时使用它们(甚至只使用filterPhone!)时它会给我一个错误:"TypeError:pattern.test不是一个函数" …

html javascript regex string

23
推荐指数
2
解决办法
3万
查看次数

Python中递归的基础知识

"编写一个递归函数,"listSum",它获取整数列表并返回列表中所有整数的总和".

例:

>>>> listSum([1,3,4,5,6])
19
Run Code Online (Sandbox Code Playgroud)

我知道如何以另一种方式做到这一点,但不是以递归的方式.

def listSum(ls):
    i = 0
    s = 0
    while i < len(ls):
        s = s + ls[i]
        i = i + 1
    print s
Run Code Online (Sandbox Code Playgroud)

我需要基本的方法来执行此操作,因为不允许使用特殊的内置函数.

python recursion list python-2.7

23
推荐指数
1
解决办法
3万
查看次数

如何在ubuntu上将gcc编译器更改为c ++ 11

我使用的是ubuntu 12.04,默认的gcc是4.6.3.它不接受c ++ 11命令,并给我输出说该命令不兼容c ++ 98.我在网上查看并看到有人建议不要在操作系统上更改默认编译器,因为它变得不稳定.任何人都可以建议修复或安全地下载符合c ++ 11的gcc编译器.

c++ c++11

22
推荐指数
2
解决办法
7万
查看次数

print语句如何创建局部变量

问题在这篇文章的最后.

第一个片段:空局部变量字典.

def outer():
    x = 1
    def inner():
        print "Local variables: %s" % locals()
    return inner()
print outer()
Run Code Online (Sandbox Code Playgroud)

输出:局部变量:{}

第二个片段:在inner()函数内打印并创建局部变量条目.

def outer():
    x = 1
    def inner():
        print x
        print "Local variables: %s" % locals()
    return inner()
print outer()
Run Code Online (Sandbox Code Playgroud)

输出:

1
Local variables: {'x': 1}
Run Code Online (Sandbox Code Playgroud)

第三个片段:来自内部函数内部的del x:

def outer():
    x = 1
    def inner():
        print x
        print "Local variables: %s" % locals()
        del x
    return inner()
print outer()
Run Code Online (Sandbox Code Playgroud)

输出:

>>> outer()
Traceback (most recent call last): …
Run Code Online (Sandbox Code Playgroud)

python python-internals

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

返回匹配条件的列表子集

假设我有一个ints 列表:

listOfNumbers = range(100)
Run Code Online (Sandbox Code Playgroud)

我想返回符合某种条件的元素列表,比如说:

def meetsCondition(element):
    return bool(element != 0 and element % 7 == 0)
Run Code Online (Sandbox Code Playgroud)

什么是Python化的方式返回子list在一个元素list为这 meetsCondition(element)True

一种天真的方法:

def subList(inputList):
    outputList = []

    for element in inputList:
        if meetsCondition(element):
            outputList.append(element)

    return outputList

divisibleBySeven = subList(listOfNumbers)
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以做到这一点,也许有一个列表理解或set()函数,没有临时的outputList?

python list-comprehension list set python-2.7

22
推荐指数
1
解决办法
3万
查看次数

为什么`float`函数慢于乘以1.0?

我知道这可能被认为是一个非问题,但我为HPC环境编写软件,所以这3.5倍的速度增加实际上有所不同.

In [1]: %timeit 10 / float(98765)            
1000000 loops, best of 3: 313 ns per loop

In [2]: %timeit 10 / (98765 * 1.0)
10000000 loops, best of 3: 80.6 ns per loop
Run Code Online (Sandbox Code Playgroud)

我曾经dis看过代码,我认为它float()会变慢,因为它需要一个函数调用(不幸的是我无法dis.dis(float)看到它实际上在做什么).

我想第二个问题是我float(n)应该何时使用,何时使用n * 1.0

python optimization python-internals

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

如何在python OrderedDict上使用字符串键而不是整数进行切片?

由于OrderedDict具有列表(具有有序元素)和字典(使用键而不是索引)的特征,因此使用键切片似乎很自然.

>>> from collections import OrderedDict
>>> cities = OrderedDict((('san francisco', 650), ('new york', 212), ('shanghai', 8621), ('barcelona', 42423)))
>>> test['shanghai':]  # I want all the cities from shanghai to the end of the list
TypeError: unhashable type
Run Code Online (Sandbox Code Playgroud)

有趣的是,由于OrderedDictionary.__getslice__没有实施,这不是你看到的错误.我尝试添加自己的__getslice__方法OrderedDict,但我一直遇到这个TypeError问题.似乎Python正在进行某种类型检查以强制切片键只是整数,在它们传递给__getslice__函数之前,是多少unpythonic!

>>> class BetterOrderedDict(OrderedDict):
        def __getslice__(self, start=None, end=None, step=1):
            return 'potato'

>>> test = BetterOrderedDict((('one', 1), ('two', 2), ('three', 3), ('four', 4)))
>>> print test[1:4]
'potato'                           # ok this makes sense so …
Run Code Online (Sandbox Code Playgroud)

python dictionary ordereddictionary python-2.7 python-internals

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

与Scala等函数式语言相比,Js延迟/承诺/未来

我主要使用Scala和JavaScript等编程语言.我试图理解在两种语言中如何使用异步响应式编程的相似点和不同点.你能帮助我吗?

我没有采用任何特定的Js Promise框架,因为它似乎很多实现了类似的规范(如Promise/A).到目前为止我只使用过Q.


似乎在Javascript中我们称之为Deferred我们解决的对象来完成一个Promise.在Scala中,似乎Promise是你决定获得Futuremonad 的对象.

有人可以告诉我这是对的吗?Promise在Js和Scala之间使用不同术语有什么好的理由吗?


此外,在Scala中,我们通常Future使用像(map和Haskell)这样的运算符进行进一步计算来链接monad .在Js中这些相当于什么?flatMapbind

我可能是错的,但在我看来,在JS中的then一个Promise种类同时处理的mapflatMap运营商吗?如果是这样,是否有可能获得一个promise of promise of resultin Js?就像我们可以Future[Future[Result]]在Scala中获得一个(Future[Result]无论如何都可以扁平化).


Js Promise是monad吗?即使方法名称与我们在monad文献中找到的名称不匹配,它似乎也是如此.

javascript scala future promise deferred

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

列表(生成器)的意外输出

我有一个列表和一个lambda定义为的函数

In [1]: i = lambda x: a[x]
In [2]: alist = [(1, 2), (3, 4)]
Run Code Online (Sandbox Code Playgroud)

然后我尝试两种不同的方法来计算一个简单的总和

第一种方法.

In [3]: [i(0) + i(1) for a in alist]
Out[3]: [3, 7]
Run Code Online (Sandbox Code Playgroud)

第二种方法.

In [4]: list(i(0) + i(1) for a in alist)
Out[4]: [7, 7]
Run Code Online (Sandbox Code Playgroud)

两种结果都出乎意料地不同.为什么会这样?

python list-comprehension generator-expression python-2.7

20
推荐指数
3
解决办法
4555
查看次数