我对此仍然有点新意,所以我可能不知道所有传统的术语:
使用JSON编码时是否可以保留Python元组?现在json.loads(json.dumps(tuple))给我一个清单.我不想将我的元组转换为列表,但我想使用JSON.那么,有选择吗?
原因是:我正在创建一个使用多维数组的应用程序,并不总是相同的形状.我有一些类方法使用递归来探测数组并将端点转换为字符串或int.我最近意识到(基于我的递归如何工作)我可以使用元组来防止更深入的数组递归搜索(Python rawks).在我知道我肯定不需要深入研究数据结构的情况下,这可能会派上用场.
我自己在Python 3.3上构建它,但我不能为我的生活找到类的定义numpy.array().我看了整个代码甚至找到了核心C文件,但dang数组类在哪里?
任何人都可以告诉我要查看的目录,或者如何从python shell中找到它?
我发现了一些相关的问题,但在那里找不到答案.
我正在编写一个简单的小MATLAB类,以便在MATLAB中学习OOP语法.我对Python非常熟悉,并试图使用MATLAB.这是定义:
classdef Car < handle
properties
speed = [0,0] %x,y velocity
position = [0,0]
running = false
end
methods
function obj = Car(pos, spd)
obj.position = pos;
obj.speed = spd;
end
function accelerate(obj,x,y) % Add to speed
obj.speed = obj.speed + [x,y]
end
function position = getPosition(obj)
position = obj.position
end
function start(obj)
obj.running = true
end
function stop(obj)
obj.running = false
end
end
end
Run Code Online (Sandbox Code Playgroud)
这当然没有完成,但后来我使用一个小脚本来弄乱对象:
foo = Car([1,1],[0,2])
foo.start
foo.accelerate(2,3)
Run Code Online (Sandbox Code Playgroud)
实例化工作,但我调用的任何方法都会抛出错误.foo.start,例如:
Error using Car/start
Too many input arguments. …Run Code Online (Sandbox Code Playgroud) 我试图在这里使用这个巧妙的技巧来处理 csv 文件。不过,我似乎无法在 python3 中使用自动完成功能。我不知道从哪里开始 readline。文档有点密集。我的猜测是我错过了raw_input()Python 2 中没有的东西。
我已将我的尝试粘贴在下面。当我在 shell 中并点击选项卡时,我只会看到大选项卡并且没有自动完成操作。我的意图是下面的输入语句在 strings 上自动完成['10/10/2013', '10/13/2013', '10/14/2013', '10/15/2013']。
我缺少什么?
import readline
class MyCompleter(object): # Custom completer
def __init__(self, options):
self.options = sorted(options)
def complete(self, text, state):
if state == 0: # on first trigger, build possible matches
if text: # cache matches (entries that start with entered text)
self.matches = [s for s in self.options
if s and s.startswith(text)]
else: # no text entered, all matches …Run Code Online (Sandbox Code Playgroud) 这是我用牛顿方法制作分形的一个小脚本.
import numpy as np
import matplotlib.pyplot as plt
f = np.poly1d([1,0,0,-1]) # x^3 - 1
fp = np.polyder(f)
def newton(i, guess):
if abs(f(guess)) > .00001:
return newton(i+1, guess - f(guess)/fp(guess))
else:
return i
pic = []
for y in np.linspace(-10,10, 1000):
pic.append( [newton(0,x+y*1j) for x in np.linspace(-10,10,1000)] )
plt.imshow(pic)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我正在使用numpy数组,但是仍然循环遍历1000×1000 linspaces的每个元素以应用该newton()函数,该函数作用于单个猜测而不是整个数组.
我的问题是:我如何改变我的方法以更好地利用numpy数组的优势?
PS:如果你想在不等太久的情况下尝试代码,最好使用100×100.
额外背景:
请参阅牛顿方法以查找多项式的零.
分形的基本思想是测试复平面中的猜测并计算迭代次数以收敛到零.这就是递归的内容newton(),最终会返回步数.复平面中的猜测表示图像中的像素,通过收敛的步数来着色.从一个简单的算法,你得到这些美丽的分形.
这个问题可能已经有人问过了,但我不知道如何表达好。我是 bash 脚本的新手...
假设我在一个目录中有一堆文件,名称如下:
file1_pre.ext
file2_pre.ext
file3_pre.ext
different_tmp.ext
Run Code Online (Sandbox Code Playgroud)
我可以使用通配符来过滤感兴趣的文件:
for f in *_pre.ext
do
echo $f
done
Run Code Online (Sandbox Code Playgroud)
但我怎么解析/提取前缀,这样我可以得到的字符串file1,file2等等作为文件名别的东西用?
我想克隆一个包含巨大 .exe 文件的 GitHub 存储库。(为什么?!)我对 .exe 文件的使用为零,它比其他所有文件的总和还要大得多。克隆文件时有没有办法忽略该文件?
我的猜测是,我会更幸运地要求作者制作一个无 exe 的分支!希望有一些不错的方法可以解决这个问题。
如果'重载'不是正确的术语,请原谅我...
我想做这样的事情:
class Length:
def __init__(self, length = 0):
self._length = length
def twice(self, length = self._length):
return length*2
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我试图self._length在论证中引用twice().Python虽然不喜欢这个.我得到NameError: name 'self' is not defined.
有没有一种很好的方法来分配这样的默认值并得到我想要的东西?
如果我有一个文件 python_error_msg.py
x = [e for e in range(x)
x+=1
Run Code Online (Sandbox Code Playgroud)
我跑了
$ python3 python_error_msg.py
Run Code Online (Sandbox Code Playgroud)
缺少的括号会出现以下错误:
File "python_error_msg.py", line 2
x+=1
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我的错误在于忘记]列表理解.这是可以做得更好的东西,还是Python语法如何工作的深层次问题?
另外,在哪里可以查看 代码库 以了解错误报告在Python中的工作原理?
在Matlab中,当您运行脚本时,变量会在内存中保留,并且您可以在shell中进行访问.我觉得这对调试和探索非常有用.我试图在Python中实现类似的效果.也许这甚至不可能.
例如,假设我有一个名为的文件 script.py
#!/usr/bin/env python
def foo(n):
return 2*n
x = 5
y = foo(5)
Run Code Online (Sandbox Code Playgroud)
我想能够运行这一点,并有访问x和y在Python外壳.我想>>> import script这使我获得foo通过script.foo(),但我想访问x和y太.
>>> from script import * 也没有完成工作.
我如何让python将这些(在内存中)留在python shell中?