小编ora*_*nge的帖子

Python中的不可变列表

我正在尝试创建一个在整个应用程序中使用的列表.我认为将这个列表包装在一个元组中可以解决这个问题,但它似乎tuple(list)并没有实际换行,而是复制了列表元素.

>>> a = [1, 2, 3, 4]
>>> b = tuple(a)
>>> b
(1, 2, 3, 4)
>>> a[0] = 2
>>> b # was hoping b[0] to be 2
(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以在此列表上创建一个列表支持的"视图",该视图是不可变的(此视图上的操作),但是反映了支持列表中发生的任何更改?

我意识到之前已经问过这个问题,但没有一个回复解决这个视图支持列表关系(实际上一些评论甚至表明元组按照我希望的方式工作,但上面的代码片段暗示了其他情况).

python tuples list immutability

4
推荐指数
1
解决办法
2508
查看次数

手动实例化组件的事件处理

我正在尝试手动实例化 Vuejs 组件,但无法将事件传递给其父组件。

<template>
  <div>
    <input :value='value' @input='updateValue($event.target.value)'>
  </div>
</template>
<script>
  export default {
    props: ['value'],
    methods: {
      updateValue: function (value) {
        this.$emit('input', value);
      }
    }
  }
</script>
Run Code Online (Sandbox Code Playgroud)

该组件由

var ComponentClass = Vue.extend(Component);
var instance = new ComponentClass({
  propsData: {
    value: this.modelValue
  }
});
instance.$mount();
document.getElementById('app').appendChild(instance.$el)
Run Code Online (Sandbox Code Playgroud)

问题是它this.modelValue不会自动更新,因为this._events(在组件中)不包含任何侦听器。但是,当我在模板中添加组件时,它会按预期工作(this.modelValue来自父组件的更新)。当组件被手动实例化时,还有什么需要做的吗?

vue-component vuejs2

4
推荐指数
1
解决办法
462
查看次数

优雅地停止芹菜任务

我想优雅地退出芹菜任务(即不是通过电话revoke(celery_task_id, terminate=True)).我以为我会向设置标志的任务发送消息,以便任务函数可以返回.与任务沟通的最佳方式是什么?

python celery celery-task django-celery

3
推荐指数
2
解决办法
8105
查看次数

Numpy:在不使用nan_to_num的情况下乘以NaN值

我能够在我的程序中优化一些操作numpy.当我描述一个跑步时,我注意到大部分时间花在了numpy.nan_to_num.我想进一步改善这一点.

发生的计算类型是两个数组的乘法,其中一个数组可以包含nan值.我希望这些被视为零,但是我不能用零初始化数组,因为nan后面有一个含义,不能设置为0.有没有办法做乘法(和加法)nan被视为零零?

nan_to_num文档字符串中,我可以看到生成一个新数组,这可以解释为什么它需要这么长时间.

将nan替换为零,使用有限数字替换inf.

返回一个数组或标量,用零替换非数字(NaN),...

nansum任意算术运算一样的函数会很棒.

python arrays numpy

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

具有多个布尔数组的Numpy多维切片

我正在尝试使用单独的1维布尔数组来切割多维数组.出于某种原因,此代码不起作用:

>>> a = np.ones((100, 200, 300, 2))
>>> a.shape
(100, 200, 300, 2)
>>> m1 = np.asarray([True]*200)
>>> m2 = np.asarray([True]*300)
>>> m2[-1] = False
>>> a[:,m1,m2,:]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (200,) (299,) 
>>> m2 = np.asarray([True]*300) # try again with all 300 dimensions True
>>> a[:,m1,m2,:]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: shape …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy slice

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

迭代元组列表并仅解压第一个元素

假设有以下列表: foo = [(1, 2, 3, 4), (5, 6, 7, 8)]

有没有办法遍历列表并仅解包内部元组的前两个元素?

这是一个常见的模式:{a: b for a, b, _, _ in foo},但是如果foo被修改(程序更改)并且元组现在包含 5 个元素而不是 4 个元素(列表理解需要相应地修改),则会中断。我真的很喜欢命名元素而不是调用{f[0]: f[1] for f in foo},所以理想情况下,会有某种“吸收所有未解压的变量”,因此可以调用{a: b for a, b, absorb_rest in foo}. 如果可能的话,元组中包含多少个元素并不重要(只要至少有 2 个)。

python list-comprehension iterable-unpacking

3
推荐指数
2
解决办法
2350
查看次数

行为类似于函数的JavaScript变量

是否可以创建链接到函数的变量,并在每次读取变量时执行该函数?当某个翻译的调用已经发生时(返回将来可能会改变的翻译字符串),用例将是更新语言翻译。这有点类似于类的getter方法,但是没有实际定义类。

任何想法如何做到这一点(如果有的话)?

javascript getter lazy-evaluation

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

使用 mako 脚本进行单行 for 循环输出

是否可以将 mako 脚本的 for 循环仅填充到一行?到目前为止,我看到的所有示例都创建了多行,并且在一行中编写 mako for 循环会导致 mako 错误。

填充 mako 模板的示例代码:

data = ['foo', 'bar', 'baz']
template = Template(filename='test.mak')
template.render(data=data)
Run Code Online (Sandbox Code Playgroud)

模板文件 test.mak (创建多行,这不是我想要的):

items=
% for d in data:
${d}${'' if loop.last else ','}
% endfor
Run Code Online (Sandbox Code Playgroud)

预期的扩展 mako 脚本输出应该是items=foo,bar,baz.

我当前的解决方法是items=${','.join(data)}使用 mako 脚本,但我想知道这是否也可以通过内置的 mako 指令实现。

python template-engine mako

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

使用不相等的索引将系列分配给DataFrame

我有以下数据框和具有不同索引的系列,并喜欢将系列's'添加到dataframe df2.

>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame({'a': [1, 2, 2, 3], 'b': [1, 1, 2, 2], 'c': [1, 2, 3,4]})
>>> df
   a  b  c
0  1  1  1
1  2  1  2
2  2  2  3
3  3  2  4
>>> df2 = df.set_index(['a', 'b'])
>>> df2
     c
a b   
1 1  1
2 1  2
  2  3
3 2  4
>>> s = pd.Series([10, 20, 30], pd.MultiIndex.from_tuples([[1], [2], [3]], …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Numpy高级选择不起作用

有人可以帮助我理解为什么有时高级选择不起作用以及我能做些什么才能让它起作用(第二种情况)?

>>> import numpy as np
>>> b = np.random.rand(5, 14, 3, 2)

# advanced selection works as expected
>>> b[[0,1],[0,1]]
array([[[ 0.7575555 ,  0.18989068],
        [ 0.06816789,  0.95760398],
        [ 0.88358107,  0.19558106]],

       [[ 0.62122898,  0.95066355],
        [ 0.62947885,  0.00297711],
        [ 0.70292323,  0.2109297 ]]])

# doesn't work - why?
>>> b[[0,1],[0,1,2]]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape

# but this seems to work
>>> b[:,[0,1,2]]
array([[[[  7.57555496e-01, …
Run Code Online (Sandbox Code Playgroud)

python numpy multidimensional-array matrix-indexing

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

带有angularjs的动态菜单栏

我正在尝试使用创建菜单栏Angularjs.我之前做过类似的事情Backbonejs,但是我很难用角度来解决这个问题.

在我的html文件中,我有以下菜单占位符.

<div id='menu1'></div>
<div id='menu2'></div>
<div id='menu3'></div>
<div id='menu4'></div>
<div id='menu5'></div>
Run Code Online (Sandbox Code Playgroud)

我的一些角度模块在加载(in run)时会添加一个菜单.他们每个人只保留一个特定的插槽(即menu1..5),所以他们不会发生冲突.如果未加载某些模块,则菜单栏中不会显示其菜单.

角度模块在概念上看起来像:

angular.module('myModule3', [])
  .service('someService', function($http) {
    // get some data to populate menu (use $http)
    this.menuItems = ['orange', 'apple', 'banana']
  })

  .run(['someService', function(someService) {
    // create a rendered menu item
    ...
    // insert it at id="menu3"
  })
Run Code Online (Sandbox Code Playgroud)

为简单起见,渲染的菜单项应如下所示:

  <ul>
    <li>organge</li>
    <li>apple</li>
    <li>banana</li>
  </ul>
Run Code Online (Sandbox Code Playgroud)

我对角度很新,所以我真的不知道从哪里开始.我一直在读directives,但是看不到它们是如何适应的,因为它们需要一些自定义标记(可能是包含DOM目标的自定义菜单标记(即menu..5).另外,如何将它连接到控制器是我不清楚.

更新 除了以上base template(包含DOM中的任意锚点)和指令(将生成将插入这些锚点的DOM元素)之外,模板将有助于创建DOM元素.此模板将位于一个单独的文件中,该文件包含指令的DOM元素将插入的位置(与通常的指令相反,其中已经存在的标记将被替换/插入到与指令定义匹配的特定标记中:

<menu ng-model="Model3DataService" target="#menu3">
  <ul> …
Run Code Online (Sandbox Code Playgroud)

html javascript dom angularjs angularjs-directive

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

将 DataFrame 作为 JSON 与附加数据相结合

我想将一些元信息与 Pandas DataFrame 作为 JSON 字符串组合在一起。

我可以调用df.to_json(orient='values')将 DataFrame 的数据作为数组获取,但是如何将它与一些其他数据结合起来?

result = {
  meta: {'some': 'meta info'},
  data: [[dataframe.values], [list], [...]]
}
Run Code Online (Sandbox Code Playgroud)

我还可以问:如何将 Python 对象 ( meta: {...}) 合并为序列化的 JSON 字符串 ( df.to_json())?

python json pandas

0
推荐指数
1
解决办法
3136
查看次数