这是我能提出的最佳算法.
def get_primes(n):
numbers = set(range(n, 1, -1))
primes = []
while numbers:
p = numbers.pop()
primes.append(p)
numbers.difference_update(set(range(p*2, n+1, p)))
return primes
>>> timeit.Timer(stmt='get_primes.get_primes(1000000)', setup='import get_primes').timeit(1)
1.1499958793645562
Run Code Online (Sandbox Code Playgroud)
可以做得更快吗?
此代码有一个缺陷:由于numbers
是无序集,因此无法保证numbers.pop()
从集中删除最小数字.然而,它对某些输入数字起作用(至少对我而言):
>>> sum(get_primes(2000000))
142913828922L
#That's the correct sum of all numbers below 2 million
>>> 529 in get_primes(1000)
False
>>> 529 in get_primes(530)
True
Run Code Online (Sandbox Code Playgroud) 是否可以background-image
为SVG <path>
元素设置?
例如,如果我设置元素class="wall"
,CSS样式.wall {fill: red;}
可以工作,但.wall{background-image: url(wall.jpg)}
不会.wall {background-color: red;}
.
每次我需要设计一个新的数据库时,我都会花一些时间考虑如何设置数据库模式来保存更改的审核日志.
这里已经提出了一些问题,但我不同意所有场景都有一个最好的方法:
我还偶然发现了这篇关于维护数据库更改日志的有趣文章,该文章试图列出每种方法的优缺点.它写得很好并且有很多有趣的信息,但它使我的决定更加困难.
我的问题是:是否有一个我可以使用的参考,可能是一本书或类似决策树的东西,我可以参考决定我应该根据一些输入变量去哪种方式,例如:
我知道的方法是:
1.为创建和修改的日期和用户添加列
表格示例:
主要缺点:我们失去了修改的历史.提交后无法回滚.
2.仅插入表格
表格示例:
主要缺点:如何保持外键最新?需要巨大的空间
3.为每个表创建单独的历史记录表
历史表示例:
主要缺点:需要复制所有审计表.如果架构发生更改,则还需要迁移所有日志.
4.为所有表创建合并历史记录表
历史表示例:
主要缺点:如果需要,我能否轻松重建记录(回滚)?new_value列需要是一个巨大的字符串,因此它可以支持所有不同的列类型.
我需要一个相当容易使用的无头浏览器(我仍然是相当新的Python和一般的编程),这将允许我导航到一个页面,登录到需要Javascript的表单,然后通过以下方式刮擦生成的网页搜索符合特定条件的结果,单击复选框,然后单击以下载文件.所有这些都需要Javascript.
我听到无头浏览器是我想要的 - 需求/偏好是我能够从Python运行它,并且最好是生成的脚本可以通过py2exe编译(我正在为其他用户编写这个程序).
到目前为止风车看起来很像我想要的,但我不确定.
任何想法赞赏!
有人在Windows上成功安装了PygraphViz吗?
由于没有适用于Windows的正式版本,我正在尝试自己构建它,但它无法编译.我不是第一个来面对这个问题,但我无法找到答案.
这是控制台输出:
C:\Python26\Lib\site-packages\pygraphviz-0.99.1>c:\python26\python.exe setup.py
install
library_path=C:/Program Files/Graphviz2.26.3/lib/debug/dll
include_path=C:/Program Files/Graphviz2.26.3/include/graphviz
running install
running build
running build_py
running build_ext
building 'pygraphviz._graphviz' extension
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W
3 /GS- /DNDEBUG "-IC:/Program Files/Graphviz2.26.3/include/graphviz" -Ic:\python
26\include -Ic:\python26\PC /Tcpygraphviz/graphviz_wrap.c /Fobuild\temp.win32-2.
6\Release\pygraphviz/graphviz_wrap.obj
graphviz_wrap.c
warning: I don't know what to do with 'runtime_library_dirs': ['C:/Program Files
/Graphviz2.26.3/lib/debug/dll']
error: don't know how to set runtime library search path for MSVC++
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
每个人都知道在Python中,赋值不会返回一个值,大概是为了避免if
在通常只是进行比较时对语句进行赋值:
>>> if a = b:
File "<stdin>", line 1
if a = b:
^
SyntaxError: invalid syntax
>>> if a == b:
... pass
...
Run Code Online (Sandbox Code Playgroud)
出于同样的原因,人们可能会怀疑同一语句中的多个赋值也是语法错误.
实际上,a = (b = 2)
这不是一个有效的表达式:
>>> a = (b = 2)
File "<stdin>", line 1
a = (b = 2)
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:为什么a = b = 2
在Python中工作,因为它适用于赋值语句有值的其他语言,比如C?
>>> a = b = c = 2
>>> a, b, c
(2, 2, 2)
Run Code Online (Sandbox Code Playgroud)
这种行为是否有记录?我在赋值语句文档中找不到任何相关内容:http: …
是否有任何允许Photoshop或PDF风格变焦那里我有希望用户能够图片点击可放大和出库或组件,我想支持能够在多次放大和缩小了一些时间
我想要相当于每个能够做这样的事情的用户:https: //addons.mozilla.org/en-US/firefox/addon/139
当使用@login_required装饰器并设置LOGIN_URL变量时,我发现了一种信息泄漏.
我有一个网站,要求所有内容的强制登录.问题是,当它是现有页面时,您将被重定向到登录页面,并设置下一个变量.
所以当没有登录并要求:
http://localhost:8000/validurl/
Run Code Online (Sandbox Code Playgroud)
你看到了这个:
http://localhost:8000/login/?next=/validurl/
Run Code Online (Sandbox Code Playgroud)
在请求不存在的页面时:
http://localhost:8000/faultyurl/
Run Code Online (Sandbox Code Playgroud)
你看到了这个:
http://localhost:8000/login/
Run Code Online (Sandbox Code Playgroud)
这揭示了一些我不想要的信息.我想过覆盖login方法,强制下一个为空并在这个子类方法上调用'super'.
另一个问题是我的一些测试在没有设置LOGIN_URL的情况下失败.他们重定向到'/ accounts/login /'而不是'/ login /'.因此,为什么我想使用LOGIN_URL但禁用'自动下一个'功能.
谁可以对这个问题有所了解?
非常感谢.
杰拉德.
python ×6
django ×3
html ×2
image ×2
javascript ×2
audit ×1
c ×1
css ×1
django-urls ×1
excel ×1
formatting ×1
graphviz ×1
installation ×1
logging ×1
math ×1
optimization ×1
primes ×1
svg ×1
windows ×1
xlwt ×1
zoom ×1