在闲置浏览命名空间的同时,我注意到一个名为" 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) 我有以下程序:
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中字符串的二进制表示.例如
st = "hello world"
toBinary(st)
Run Code Online (Sandbox Code Playgroud)
有一个简洁的方法来做这个吗?
在这段代码中,我试图创建一个函数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) 什么可以导致Resource temporarily unavailable
套接字send()
命令出错?套接字设置为AF_UNIX, SOCK_STREAM
.它大部分时间都有效,但偶尔会出现此错误.套接字的接收端似乎正常工作.
我知道这不是很详细,但我只是在寻找一般的想法.谢谢!
一个相当常见的操作是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) 我想弄清楚字符串中出现字符串的次数.例如:
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字典
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的工作原理(因为我一直都在使用它!).根据我的理解,当你运行python script.py之类的东西时,脚本转换为字节码,然后解释器/ VM/CPython - 实际上只是一个C程序 - 读取python字节码并相应地执行程序.
这个字节码是如何读入的?它是否类似于在C中读取文本文件的方式?我不确定Python代码是如何转换为机器代码的.是这样的情况,Python解释器(CLI中的python命令)实际上只是一个已经转换为机器代码的预编译C程序,然后python字节码文件只是通过该程序?换句话说,我的Python程序是否从未实际转换为机器代码?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是巨大的,我不知道它是否遵循相同的内存分配规则?