我知道可以做类似的事情
i = numpy.array([1,0,0])
j = numpy.array([0,1,0])
k = numpy.array([0,0,1])
a = 2*i + 5*j + 9*k
Run Code Online (Sandbox Code Playgroud)
但是有可能利用类似的语法来完成复杂数字的方式,并创建一个可以确定2i + 5j + 9k是我的类成员的类,并自动创建它吗?
或者它是否需要通过改变解析文件的方式来改变python解释器?我已经查看了语法文件,但我可以看到它提到的是NUMBER,并且j没有提到过一次.
我也查看了parsermodule.c,但是在那里找不到任何明显可以做到的东西.
有谁知道这怎么可能?
我应该补充一点,我实际上并没有计划这样做(除非出现一些奇迹,事实证明不需要重新编译我自己的python版本,除了学术之旅之外,这将是疯狂的事情),但只是出来关于语言如何运作的好奇心.
如何更改插入axes对象的尺寸?
我正在创建一个这样的情节:

我希望插图更宽,zoomed_inset_axes方法默认为与底层数据相同的宽高比(我猜是明智的),但它似乎抵制了我改变它的任何尝试......
我这样使用它:
axins.axis(args.inset_extent)
os = axins.get_position()
pos = [pos.x0, pos.y0, pos.width * 2, pos.height]
axins.set_position(pos)
Run Code Online (Sandbox Code Playgroud)
我也试过了whichset_position的kwarg,而且似乎什么也没做.
如何设置插图的位置,更重要的是改变它的纵横比?
它是一个相当长的绘图脚本的一部分,完整的代码在这里,并尝试它的几个示例基础集:6-31G.dat和3-21G.dat.
只需将它们下载到自己的目录中,并将基础集文件放在一个名为dir的目录中basis_sets,然后使用命令:
./basis_sets.py -r -2 2 -b 6-31G 3-21G -a C --inset --inset-zoom 6 --inset-extent -0.03 0.03 6.7 7.7
Run Code Online (Sandbox Code Playgroud)
(./basis_sets.py --help打印出使用指南)
是否有可能在传递列表时生成一个生成生成器的函数,但是在给定单个值时会返回?
以此为例:
def duty2015(x):
if type(x) in [list, np.ndarray]:
for xi in x:
yield new_duty(xi)
else:
sd = 0
if x <= 120000:
return sd
elif x <= 250000:
return (x-125000) * 0.02
elif x <= 925000:
return 2500 + (x-250000)*0.05
elif x <= 1500000:
return 36250 + (x-925000)*0.1
else:
return 93750 + (x-1500000)*0.12
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,我得到SyntaxError: 'return' with argument inside generator错误.
我意识到我可以做这样的事情:
def duty2015(x):
if type(x) in [list, np.ndarray]:
for xi in x:
for result in duty2015(xi):
yield result …Run Code Online (Sandbox Code Playgroud) 这是我的数据集,包含两列 NS 和计数。
NS count
0 ns18.dnsdhs.com. 1494
1 ns0.relaix.net. 1835
2 ns2.techlineindia.com. 383
3 ns2.microwebsys.com. 1263
4 ns2.holy-grail-body-transformation-program.com. 1
5 ns2.chavano.com. 1
6 ns1.x10host.ml. 17
7 ns1.amwebaz.info. 48
8 ns2.guacirachocolates.com.br. 1
9 ns1.clicktodollars.com. 2
Run Code Online (Sandbox Code Playgroud)
现在我想通过绘制它来看看有多少 NS 具有相同的计数。我自己的猜测是我可以使用直方图来查看,但我不确定如何。任何人都可以帮忙吗?
我不太确定这个问题的好标题是什么,所以我会解释我想做什么.
我想要一个类,可以通过某种方式实例化:
class Setting(int):
def __init__(self, value, description=None):
super(Setting, self).__init__(value)
self.description = description
max_memory = Setting(5, description="The maximum memory we can use")
print s + 5 # 10
print s.description # The maximum memory we can use
Run Code Online (Sandbox Code Playgroud)
但是,我希望这适用于所有对象,所以我可以只有一个类.这样我就可以让对象的行为与底层value对象完全相同,但只是附加description属性.
我尝试将上面改为:
class Setting(object):
def __init__(self, value, description=None):
type(value).__init__(value)
self.description = description
s = Setting(5)
print s + 5
print s.description
Run Code Online (Sandbox Code Playgroud)
但现在我收到了错误:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print s + 5
TypeError: unsupported …Run Code Online (Sandbox Code Playgroud) 如标题中所示.
我知道这在其他语言中是可行的 - 它是在C#中吗?
如果问题标题不清楚,我想要做的事情(如下):
MyClass exampleObject1 = new MyClass(...)
exampleObject1.sort() //sort method detects that value is not being assigned and performs sort in place.
MyClass exampleObject2 = exampleObject1.sort() //method detects assignment and returns new sorted object leaving original untouched.
Run Code Online (Sandbox Code Playgroud)
这是不可能诉诸魔法的东西?如果有可能,但是以某种令人讨厌的方式,这是什么方式?
编辑:对于那些想要看到你可以做到这一点的例子(在python中):这里.请注意,我告诉它它并不总是有效的问题 - 但这仅仅与我回答问题时的方式有关.现在我对检查有了更多了解,如果在任何地方分配,您可以从堆栈中获取所需的所有信息.