小编Ash*_*ary的帖子

Python Ellipsis对象有什么作用?

在闲置浏览命名空间的同时,我注意到一个名为" Ellipsis " 的奇怪物体,它似乎没有或做任何特殊的事情,但它是一个全局可用的内置.

在搜索之后,我发现它被Numpy和Scipy用于切片语法的一些模糊变体......但几乎没有别的.

这个对象是否专门用于支持Numpy + Scipy?省略号是否具有任何通用含义或用途?

D:\workspace\numpy>python
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> Ellipsis
Ellipsis
Run Code Online (Sandbox Code Playgroud)

python ellipsis

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

如何在python中将项添加到空集

我有以下程序:

def myProc(invIndex, keyWord):
    D={}
    for i in range(len(keyWord)):
        if keyWord[i] in invIndex.keys():
                    D.update(invIndex[query[i]])
    return D
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
TypeError: cannot convert dictionary update sequence element #0 to a sequence
Run Code Online (Sandbox Code Playgroud)

如果D包含元素,我不会收到任何错误.但是我需要D在开始时是空的.

python set

98
推荐指数
2
解决办法
18万
查看次数

在python中将字符串转换为二进制

我需要一种方法来获取python中字符串的二进制表示.例如

st = "hello world"
toBinary(st)
Run Code Online (Sandbox Code Playgroud)

有一个简洁的方法来做这个吗?

python string binary

88
推荐指数
5
解决办法
28万
查看次数

循环"忘记"删除一些项目

在这段代码中,我试图创建一个函数anti_vowel,它将从字符串中删除所有元音(aeiouAEIOU).我认为它应该可以正常工作,但是当我运行它时,示例文本"嘿看单词!" 以"Hy lk Words!"返回.它"忘记"删除最后一个'o'.怎么会这样?

text = "Hey look Words!"

def anti_vowel(text):

    textlist = list(text)

    for char in textlist:
        if char.lower() in 'aeiou':
            textlist.remove(char)

    return "".join(textlist)

print anti_vowel(text)
Run Code Online (Sandbox Code Playgroud)

python string list

77
推荐指数
6
解决办法
7039
查看次数

什么可以导致sock send()命令中的"资源暂时不可用"

什么可以导致Resource temporarily unavailable套接字send()命令出错?套接字设置为AF_UNIX, SOCK_STREAM.它大部分时间都有效,但偶尔会出现此错误.套接字的接收端似乎正常工作.

我知道这不是很详细,但我只是在寻找一般的想法.谢谢!

c unix sockets linux

72
推荐指数
3
解决办法
14万
查看次数

列表理解过滤 - "set()陷阱"

一个相当常见的操作是list基于另一个过滤一个list.人们很快发现这个:

[x for x in list_1 if x in list_2]
Run Code Online (Sandbox Code Playgroud)

大输入速度慢 - 它是O(n*m).呸.我们如何加快速度?使用a set进行过滤查找O(1):

s = set(list_2)
[x for x in list_1 if x in s]
Run Code Online (Sandbox Code Playgroud)

这给出了很好的整体O(n)行为.然而,我经常看到即使是经验丰富的编码员也会陷入The Trap ™:

[x for x in list_1 if x in set(list_2)]
Run Code Online (Sandbox Code Playgroud)

确认!这也是O(n*m),因为python set(list_2) 每次构建,而不仅仅是一次.


我认为那是故事的结尾 - python无法优化它只能构建set一次.请注意陷阱.要忍受它.嗯.

#python 3.3.2+
list_2 = list(range(20)) #small for demonstration purposes
s = set(list_2)
list_1 = list(range(100000))
def f():
    return [x for x in list_1 if x in s] …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-internals

65
推荐指数
5
解决办法
4034
查看次数

确定Python中字符串中出现子字符串的次数

我想弄清楚字符串中出现字符串的次数.例如:

nStr = '000123000123'
Run Code Online (Sandbox Code Playgroud)

假设我想要找到的字符串是123.显然它在nStr中出现了两次但是我在将这个逻辑实现到Python时遇到了麻烦.我现在得到的是:

pattern = '123'
count = a = 0
while pattern in nStr[a:]:
    a = nStr[a:].find(pattern)+1
    count += 1
return count
Run Code Online (Sandbox Code Playgroud)

它应该返回的答案是2.我现在陷入无限循环.

我刚才意识到数量是一个更好的方法,但出于好奇,有没有人看到类似于我已经得到的方法呢?

python string python-2.7 python-3.x

55
推荐指数
3
解决办法
7万
查看次数

python:迭代按键排序的字典

我有一本Python字典

steps = {1:"value1", 5:"value2", 2:"value3"}
Run Code Online (Sandbox Code Playgroud)

我需要通过密钥迭代这个排序顺序.

我试过这个:

x = sorted(steps, key=lambda key: steps[key])
Run Code Online (Sandbox Code Playgroud)

但价值从x消失了.

python sorting dictionary

54
推荐指数
4
解决办法
6万
查看次数

Python Bytecode究竟是如何在CPython中运行的?

我试图了解Python的工作原理(因为我一直都在使用它!).根据我的理解,当你运行python script.py之类的东西时,脚本转换为字节码,然后解释器/ VM/CPython - 实际上只是一个C程序 - 读取python字节码并相应地执行程序.

这个字节码是如何读入的?它是否类似于在C中读取文本文件的方式?我不确定Python代码是如何转换为机器代码的.是这样的情况,Python解释器(CLI中的python命令)实际上只是一个已经转换为机器代码的预编译C程序,然后python字节码文件只是通过该程序?换句话说,我的Python程序是否从未实际转换为机器代码?python解释器是否已经在机器代码中,所以我的脚本永远不必是?

python cpython python-internals

50
推荐指数
3
解决办法
9977
查看次数

Python中变量的内存大小

我正在编写Python代码来进行一些大数计算,并严重关注计算中使用的内存.

因此,我想计算每个变量的每一位.

例如,我有一个变量x,它是一个大数字,并且想要计算代表x的位数.

以下代码显然没用:

x=2**1000
len(x)
Run Code Online (Sandbox Code Playgroud)

因此,我转而使用以下代码:

x=2**1000
len(repr(x))
Run Code Online (Sandbox Code Playgroud)

变量x是(十进制)是:

10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376

但上面的代码返回303

上面的长long序列的长度为302,因此我认为303应仅与字符串长度相关.

所以,这是我原来的问题:

我怎么知道变量x的内存大小?

还有一件事; 在C/C++语言中,如果我定义

int z=1;
Run Code Online (Sandbox Code Playgroud)

这意味着为z分配了4个字节= 32位,并且这些位排列为00..001(31 0和1).

在这里,我的变量x是巨大的,我不知道它是否遵循相同的内存分配规则?

python memory variables

49
推荐指数
2
解决办法
8万
查看次数