小编jam*_*lak的帖子

Python Dictionary vs If Statement Speed

我发现一些链接谈论切换案例在c ++中比其他更快,因为它可以在编译中进行优化.然后我找到了一些人们的建议,使用字典可能比If语句更快.然而,大多数谈话都是关于某些人的工作结束,最后讨论他们应该首先优化代码的其他部分,除非你做了数百万的其他事情,否则无关紧要.谁能解释为什么会这样?

假设我有100个唯一的数字将不断地流入python代码.我想检查它是哪个号码,然后执行一些操作.所以我可以做大量的if else,或者我可以将每个数字放在字典中.为了论证,让我们说它是一个单一的线程.

有人理解python和低级执行之间的层可以解释这是如何工作的吗?

谢谢 :)

python dictionary if-statement switch-statement

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

int .__ mul__,执行速度比operator.mul慢2倍

如果你看下面的时间:

C:\Users\Henry>python -m timeit -s "mul = int.__mul__" "reduce(mul,range(10000))"
1000 loops, best of 3: 908 usec per loop

C:\Users\Henry>python -m timeit -s "from operator import mul" "reduce(mul,range(10000))"
1000 loops, best of 3: 410 usec per loop
Run Code Online (Sandbox Code Playgroud)

两者之间的执行速度存在显着差异

reduce(int.__mul__,range(10000))并且reduce(mul,range(10000))后者更快.

使用该dis模块查看发生的情况:

使用int.__mul__方法:

C:\Users\Henry>python
Python 2.7.4 (default, Apr  6 2013, 19:55:15) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> mul = int.__mul__
>>> def test():
...     mul(1,2) …
Run Code Online (Sandbox Code Playgroud)

c python

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

Python:如何不在for循环的最后一个元素中打印逗号?

我的代码遍历一组并打印actor的名字:

for actor in actorsByMovies():
    print actor+",",
Run Code Online (Sandbox Code Playgroud)

结果如下:

Brad Pitt, George Clooney,
Run Code Online (Sandbox Code Playgroud)

但我想让它检测最后一个元素,以便它不会打印最后一个逗号.结果应该是:

Brad Pitt, George Clooney
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python string list

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

Python 2.x返回cmp的值

引自文档:

cmp(x, y)

比较两个对象x和y并根据结果返回一个整数.返回值是负的,如果x < y,零,如果x == y严格正面的,如果x > y.

我的假设是,返回值总是下-1,01但该文档没有明确说,只有提零和正/负返回值.

是否有任何情况下,当返回值cmp(x,y)是不是-1,01

python python-2.x

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

如何在python中的第一个分隔符实例上拆分字符串

我需要使用python拆分字符串,但只能在字符串中的分隔符的第一个实例上拆分.

我的代码:

for line in conf.readlines():
    if re.search('jvm.args',line):
        key,value= split('=',line)
        default_args=val
Run Code Online (Sandbox Code Playgroud)

问题是 line,包含jvm.args如下所示:

'jvm.args = -Dappdynamics.com=true, -Dsomeotherparam=false,'
Run Code Online (Sandbox Code Playgroud)

我希望我的代码能够jvm.args在第一个'='时分裂成键和值变量.re.split是否默认执行此操作?如果没有建议将不胜感激!

python regex string

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

Python - 使用列表推导查找增量编号序列

我在列表中有一系列数字,我正在寻找一个优雅的解决方案,最好是列表理解,以获得单个序列(包括单个值).我已经解决了这个小问题,但它并不是非常pythonic.

以下列表定义了输入序列:

input = [1, 2, 3, 4, 8, 10, 11, 12, 17]
Run Code Online (Sandbox Code Playgroud)

期望的输出应该是:

output = [
  [1, 2, 3, 4],
  [8],
  [10, 11, 12],
  [17],
]
Run Code Online (Sandbox Code Playgroud)

python list-comprehension list

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

生成器表达式永远不会引发StopIteration

我自己答案的启发,甚至不了解它是如何起作用的,请考虑以下几点:

def has22(nums):
    it = iter(nums)
    return any(x == 2 == next(it) for x in it)


>>> has22([2, 1, 2])
False
Run Code Online (Sandbox Code Playgroud)

我预计会有一个StopIteration被提升,因为一旦到达2,next(it)就会推进消耗的迭代器.但是,对于生成器表达式,似乎已完全禁用此行为!break一旦发生这种情况,生成器表达似乎立即出现

>>> it = iter([2, 1, 2]); any(x == 2 == next(it) for x in it)
False
>>> it = iter([2, 1, 2]); any([x == 2 == next(it) for x in it])

Traceback (most recent call last):
  File "<pyshell#114>", line 1, in <module>
    it = iter([2, 1, …
Run Code Online (Sandbox Code Playgroud)

python iterator generator

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

如何避免全局变量

当阅读python文档和各种邮件列表时,我总是阅读看起来有点像教条的内容.全局变量应该像地狱一样避免,它们设计很差......好吧,为什么不呢?但是有一些真实的生活情况,我不知道如何避免这种模式.

假设我有一个GUI,可以从主菜单中加载几个文件.可以在所有GUI(例如,将显示图像并且可以通过不同对话框/插件在其上执行各种动作的图像查看器)上使用与加载的文件相对应的文件对象.

构建以下设计是否有问题:

  • Menu.py - >文件将从这里加载
  • Main.py - >可以在这里使用加载的文件对象
  • Dialog1.py - >或在这里
  • Dialog2.py - >或那里
  • Dialog3.py - >或那里
  • ...
  • Globals.py

其中Globals.py将存储一个字典,其字符是已加载文件的名称和相应文件对象的值.然后,从那里,需要这些数据的代码的各个部分将通过弱引用访问它.

对不起,如果我的问题看起来(或是)很愚蠢,但你看到任何优雅或全球免费的替代品吗?一种方法是将加载的数据字典封装在Main.py的主应用程序类中,将其视为GUI的中央访问部分.然而,这也会带来一些复杂性,因为这个类应该可以从所有需要数据的对话框中轻松访问,即使它们是必要的直接子代.

非常感谢你的帮助

python global-variables

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

Python input()函数的NameError

input_var = input ("Press 'E' and 'Enter' to Exit: ")

NameError: name 'e' is not defined
Run Code Online (Sandbox Code Playgroud)

我使用的是Python 2.5.我怎么能克服这个错误?

python python-2.5

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

Python:ConfigParser.NoSectionError:没有部分:'TestInformation'

我收到ConfigParser.NoSectionError:没有部分:使用上面的代码'TestInformation'错误.

def LoadTestInformation(self):        
    config = ConfigParser.ConfigParser()    
    print(os.path.join(os.getcwd(),'App.cfg'))

    with open(os.path.join(os.getcwd(),'App.cfg'),'r') as configfile:       
        config.read(configfile)
        return config.items('TestInformation')
Run Code Online (Sandbox Code Playgroud)

文件路径是正确的,我已经双重检查.并且配置文件具有TestInformation部分

[TestInformation]

IEPath = 'C:\Program Files\Internet Explorer\iexplore.exe'

URL = 'www.google.com.au'

'''date format should be '<Day> <Full Month> <Full Year>'

SystemDate = '30 April 2013'
Run Code Online (Sandbox Code Playgroud)

在app.cfg文件中.不确定我做错了什么

python configparser

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