从iterable创建字典并为其分配一些默认值的最简单方法是什么?我试过了:
>>> x = dict(zip(range(0, 10), range(0)))
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为范围(0)不是可迭代的,因为我认为它不会(但我还是试过了!)
那我该怎么办呢?如果我做:
>>> x = dict(zip(range(0, 10), 0))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: zip argument #2 must support iteration
Run Code Online (Sandbox Code Playgroud)
这也不起作用.有什么建议?
为什么对于任何数字输入我们更喜欢int而不是short,即使输入的整数非常少.
short的大小在我的x86上是2个字节,int是4个字节,不应该比int更好更快地分配吗?
或者我说错了没用?
当我在C++程序中包含头文件中的某些函数时,整个头文件代码是否被复制到最终的可执行文件中,或者只生成特定函数的机器代码.例如,如果我std::sort从<algorithm>C++中的标题调用,则仅为sort()函数或整个<algorithm>头文件生成机器代码.
我认为Stack Overflow上存在一个类似的问题,但我已尽力找到它(我曾经看了一次,但丢失了链接).如果你能指出我的话,那就太棒了.
所以,我已经明白了exec,并eval也compile做.但为什么我需要使用它们呢?我对使用场景不清楚.
任何人都可以给我一些例子,以便我能更好地欣赏这个概念.因为我知道这都是理论.
内置类型的文档set说:
class set([iterable])
Run Code Online (Sandbox Code Playgroud)
返回一个新的set或frozenset对象,其元素取自iterable.集合的元素必须是可以清除的.
没关系,但为什么这样做:
>>> l = range(10)
>>> s = set(l)
>>> s
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Run Code Online (Sandbox Code Playgroud)
而这不是:
>>> s.add([10])
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
s.add([10])
TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)
两者都是清单.在初始化过程中是否会发生一些魔法?
假设我使用的库X指定了例如exception.BaseError所有异常的基类X.
现在,还有另一个例外,比如说X.FooError,它当然是继承的,exception.BaseError但更广泛,假设它处理无效输入.让我们假设还有许多其他类似的东西,BaseError但是对于一般化的案例而言都是如此.
X
|
BaseError
|
FooError
Run Code Online (Sandbox Code Playgroud)
所以我想检查无效输入.那么我应该抓住哪个例外?当然,捕获每个单独的异常是不可能的,所以我抓住X.BaseError然后打印一条错误消息.或者我可以抓住X.FooError具体但然后我错过了所有其他错误情况.
这是标准的做法吗 - 捕获基本异常?如果是,那么为什么存在其他例外呢?对于我们想要捕获特定异常的一般情况?
我有以下代码:
>>> x = 0
>>> y = 3
>>> while x < y:
... print '{0} / {1}, '.format(x+1, y)
... x += 1
Run Code Online (Sandbox Code Playgroud)
输出:
1 / 3,
2 / 3,
3 / 3,
Run Code Online (Sandbox Code Playgroud)
我希望我的输出像:
1 / 3, 2 / 3, 3 / 3
Run Code Online (Sandbox Code Playgroud)
我搜索并发现在一行中执行此操作的方法是:
sys.stdout.write('{0} / {1}, '.format(x+1, y))
Run Code Online (Sandbox Code Playgroud)
还有另一种方法吗?sys.stdout.write()因为我不知道它与它有什么不同,所以我感觉不舒服print.
我怎样才能wget做到这一点:
x仅从文件的本地副本的时间戳大于文件时间戳的时间戳时,才从某个位置下载文件x.这意味着,它应该从给定位置下载文件,只有当文件的版本较新时才应该.
如果有更新版本的文件,wget应覆盖该文件.
是否有可能做到这一点?
我刚刚创建了我的第一个py2exe可执行文件,并注意到使用EXE,创建了一个大小约为1.4 MB的ZIP文件.
我的问题是,我可以减小它的大小,或者预计使用py2exe生成的EXE的典型大小将是~4 MB(这意味着所有文件:python2.6dll,library.zip)
我正在尝试使用pyPdf从多页PDF中提取和打印页面.问题是,文本不是从某些页面中提取的.我在这里放了一个示例文件:
http://www.4shared.com/document/kmJF67E4/forms.html
如果运行以下命令,则前81页不返回任何文本,而最后11页正确提取.有人可以帮忙吗?
from pyPdf import PdfFileReader
input = PdfFileReader(file("forms.pdf", "rb"))
for page in input1.pages:
print page.extractText()
Run Code Online (Sandbox Code Playgroud)