Tag: python

Python如何比较string和int?

以下代码片段用输出注释( 如在ideone.com上所见 ): print "100" < "2" # True print "5" > "9" # False print "100" < 2 # False print 100 < "2" # True print 5 > "9" # False print "5" > 9 # True 有人能解释为什么输出是这样的吗? 实施细节 这种行为是由语言规范强制的,还是由实现者决定? 任何主要的Python实现之间是否有区别? Python语言的版本有差异吗?

如何导入一个模块给定的完整path?

我怎样才能加载一个Python模块的全path? 请注意,该文件可以位于文件系统的任何位置,因为它是一个configuration选项。

Python是否有一个内置的string自然sorting函数?

使用Python 3.x,我有一个string列表,我想执行一个自然的字母sorting。 自然sorting: Windows中文件的sorting顺序。 例如,下面的列表自然sorting(我想要的): ['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13'] 这里是上面列表的“sorting”版本(我有): ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9'] 我正在寻找一个类似第一个行为的sortingfunction。

禁用输出缓冲

Python的sys.stdout解释器默认启用输出缓冲吗? 如果答案是肯定的,那么禁用它的方法是什么? 迄今为止的build议: 使用-u命令行开关 将sys.stdout包装在每次写入后刷新的对象中 设置PYTHONUNBUFFERED env var sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) 有没有其他的方法来设置一些全局的标志在sys / sys.stdout编程执行期间?

如何打印没有换行或空间?

问题在于标题。 我想在Python中做我在这个例子中做的c : #include <stdio.h> int main() { int i; for (i=0; i<10; i++) printf("."); return 0; } 输出: ………. 在Python中: >>> for i in xrange(0,10): print '.' . . . . . . . . . . >>> for i in xrange(0,10): print '.', . . . . . . . . . . […]

Python嵌套函数中的局部variables

好吧,对此我忍无可忍,我知道这样看起来会非常复杂,但请帮我理解发生了什么。 from functools import partial class Cage(object): def __init__(self, animal): self.animal = animal def gotimes(do_the_petting): do_the_petting() def get_petters(): for animal in ['cow', 'dog', 'cat']: cage = Cage(animal) def pet_function(): print "Mary pets the " + cage.animal + "." yield (animal, partial(gotimes, pet_function)) funs = list(get_petters()) for name, f in funs: print name + ":", f() […]

* args和** kwargs?

所以我对* args和** kwargs的概念有困难。 到目前为止,我已经了解到: *args =参数列表 – 作为位置参数 **kwargs = dictionary – 其键值变成单独的关键字参数,并且这些值成为这些参数的值。 ?? 说实话,我不明白,并没有得到什么编程任务,这将有所帮助。 (我确定有,但我无法理解。) 也许: 我想input列表和字典作为函数的参数,同时作为通配符,所以我可以通过任何参数? 有一个简单的例子来解释如何使用*args和**kwargs ? 另外我经历的教程只使用了“*”和一个variables名。 *args和**kwargs只是一个占位符,或者你在代码中使用了*args和**kwargs ?

如何并行迭代两个列表?

我在Python中有两个iterables,我想成对地去看看它们: foo = (1, 2, 3) bar = (4, 5, 6) for (f, b) in some_iterator(foo, bar): print "f: ", f, "; b: ", b 它应该导致: f: 1; b: 4 f: 2; b: 5 f: 3; b: 6 一种方法是迭代索引: for i in xrange(len(foo)): print "f: ", foo[i], "; b: ", b[i] 但是这对我来说似乎有些不合理。 有没有更好的方法来做到这一点?

最快的方式列出N以下的所有素数

这是我能想到的最好的algorithm。 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 它可以做得更快吗? 这个代码有一个缺陷:因为numbers是一个无序的集合,不能保证numbers.pop()将从集合中删除最低的数字。 尽pipe如此,对于一些input数字来说(至less对我来说)起作用: >>> 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

你怎么能描述一个脚本?

欧拉项目和其他编码竞赛往往有最长的时间来运行,或者人们吹嘘自己的解决scheme运行得有多快。 使用python,有时这些方法有点奇怪 – 即将计时代码添加到__main__ 。 什么是一个好方法来分析一个python程序需要运行多久?