小编Won*_*ket的帖子

是否有任何理由给自己一个默认值?

我正在浏览一些代码,我注意到一条引起我注意的线.代码类似于下面的示例

class MyClass:
    def __init__(self):
        pass

    def call_me(self=''):
        print(self)
Run Code Online (Sandbox Code Playgroud)

这看起来像我见过的任何其他类,但是str作为默认值传入的是self.

如果我打印出来self,它就像正常一样

>>> MyClass().call_me()
<__main__.MyClass object at 0x000002A12E7CA908>
Run Code Online (Sandbox Code Playgroud)

这一直困扰着我,我无法弄清楚为什么会这样.是否有任何理由将str实例作为默认值传入self?

python class python-3.x

31
推荐指数
2
解决办法
1031
查看次数

如何对负数之前的正数进行排序,其中值分别排序?

我有一个包含正数和负数混合的列表,如下所示

lst = [1, -2, 10, -12, -4, -5, 9, 2]
Run Code Online (Sandbox Code Playgroud)

我想要完成的是用负数前面的正数对列表进行排序,也分别排序.

期望的输出:

[1, 2, 9, 10, -12, -5, -4, -2]
Run Code Online (Sandbox Code Playgroud)

我能够找出第一部分排序,正数和负数之前,不幸的是,这并没有分别对正数和负数进行排序.

lst = [1, -2, 10, -12, -4, -5, 9, 2]
lst = sorted(lst, key=lambda o: not abs(o) == o)
print(lst)

>>> [1, 10, 2, 9, -2, -12, -4, -5]
Run Code Online (Sandbox Code Playgroud)

如何使用pythonic解决方案实现所需的排序?

python sorting list

31
推荐指数
4
解决办法
2653
查看次数

为什么嵌套循环的顺序之间存在性能差异?

我有一个循环遍历两个列表的进程,一个相对较大而另一个相当大.

例:

larger_list = list(range(15000))
smaller_list = list(range(2500))

for ll in larger_list:
    for sl in smaller_list:            
        pass
Run Code Online (Sandbox Code Playgroud)

我缩放了列表的大小以测试性能,我注意到哪个列表首先循环之间存在相当大的差异.

import timeit

larger_list = list(range(150))
smaller_list = list(range(25))


def large_then_small():
    for ll in larger_list:
        for sl in smaller_list:
            pass


def small_then_large():
    for sl in smaller_list:
        for ll in larger_list:
            pass


print('Larger -> Smaller: {}'.format(timeit.timeit(large_then_small)))
print('Smaller -> Larger: {}'.format(timeit.timeit(small_then_large)))

>>> Larger -> Smaller: 114.884992572
>>> Smaller -> Larger: 98.7751009799
Run Code Online (Sandbox Code Playgroud)

乍一看,它们看起来完全相同 - 但是这两个功能之间有16秒的差异.

这是为什么?

python loops python-2.x

12
推荐指数
1
解决办法
674
查看次数

python flask在设置过期时不创建cookie

我有这个python-flask项目,如果cookie不存在,我需要创建cookie的逻辑.

创建cookie后,我需要将cookie以及其他值存储到数据库中以进行跟踪.

这是我当前代码的一部分:

import uuid
from flask import render_template, request, make_response

def load_cookie_config(context):
    #context is a dictionary that is passed

    key = 'some_key'
    template_name = 'some_template'
    cookie = request.cookies.get(key, None)

    if not cookie:
        guid = str(uuid.uuid4())
        context['cookie_quid'] = guid

        rsp = make_response(render_template(template_name, **context))

        rsp.set_cookie(key, guid)

        #... some method call insert values into db

    else:
       result = '' #.. some method call to get values from db
       context['cookie_quid'] = cookie
       rsp = make_response(render_template(template_name, **context))

    return rsp
Run Code Online (Sandbox Code Playgroud)

上面的代码工作,它按预期创建cookie,但是默认情况下,只要浏览器会话结束,cookie就会过期.

我需要将cookie设置为在X天数与浏览器会话后过期的位置,但是当我更改此行时:

rsp.set_cookie(key, guid)
Run Code Online (Sandbox Code Playgroud)

至 …

cookies flask python-2.7

10
推荐指数
1
解决办法
9367
查看次数

如何使用python脚本增加elasticsearch中的max_result_window?

我知道,我们可以使用curl来增加max_result_window,如:

curl -XPUT "http://localhost:9200/index1/_settings" -d '{ "index" : { "max_result_window" : 500000} }'
Run Code Online (Sandbox Code Playgroud)

但是我如何使用python做同样的事情?

我的代码

es = Elasticsearch(['http://localhost:9200'])

res = es.search(index="index1", doc_type="log",size=10000, from_=0, body={ "query": {
....query starts
}})
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在这里更改max_result_window的设置.

python python-2.6 elasticsearch elasticsearch-plugin spring-data-elasticsearch

8
推荐指数
1
解决办法
5520
查看次数

Python:将datedelta转换为时间差的int值

我想将时间增量更改为整数值.

我的代码如下.

import datetime
now = datetime.date.today()
print(now.toordinal()) # 736570
cali_date = datetime.data(2017, 6, 14)
print(cali_date.toordinal()) # 736494
date1 = now - cali_date
print(date1) # 76 days, 0:00:00
Run Code Online (Sandbox Code Playgroud)

但是,我想得到76整数.我怎么解决这个问题?谢谢.

python datetime

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

TensorFlow中不同类型的分区

我对TensorFlow很新.所以我在这里从TensorFlow中看到了这种不同类型的分裂.代码印在下面:

a = tf.constant([2, 2], name='a')
b = tf.constant([[0, 1], [2, 3]], name='b')
with tf.Session() as sess:
    print(sess.run(tf.div(b, a)))             ? [[0 0] [1 1]]
    print(sess.run(tf.divide(b, a)))          ? [[0. 0.5] [1. 1.5]]
    print(sess.run(tf.truediv(b, a)))         ? [[0. 0.5] [1. 1.5]]
    print(sess.run(tf.floordiv(b, a)))        ? [[0 0] [1 1]]
    print(sess.run(tf.realdiv(b, a)))         ? # Error: only works for real values
    print(sess.run(tf.truncatediv(b, a)))     ? [[0 0] [1 1]]
    print(sess.run(tf.floor_div(b, a)))       ? [[0 0] [1 1]]
Run Code Online (Sandbox Code Playgroud)

由于我是编程语言的菜鸟,我无法理解他们的一些文档,包括"计算分区python风格"等等.如果有人可以解释所有和实际方面之间的差异,我将不胜感激.

python tensorflow

6
推荐指数
1
解决办法
4647
查看次数

Python正则表达式用起始词替换句子

这可能是我遗漏的那些简单的事情之一,但我一直无法找到可以解决我的问题的解决方案。

我有两个字符串,格式如下:

s1 = '87, 72 开始我是一个句子结束'
s2 = '93, 83 开始我是一个句子结束'

按照这个答案,替换 2 个字符串 python 之间的所有文本,当给出开始和结束词时,我可以替换一个短语,如下所示。

import re
s1 = '87, 72 Start I am a sentence finish'
s2 = '93, 83 Start I am a sentence end'

print(re.sub("Start.*?finish", '', s1, re.DOTALL).strip())
print(re.sub("Start.*?end", '', s2, re.DOTALL).strip())

>>> 87, 72
>>> 93, 83
Run Code Online (Sandbox Code Playgroud)

就我而言,我将遇到起始词相同但结束词可能不同的条件。

是否可以通过仅提供起始词来替换所需的短语?

我试过这个,但它只替换了起始词。

s1 = '87, 72 Start I am a sentence finish'
print(re.sub("Start.*?", '', v1, re.DOTALL).strip())

>>> 87, 72 I am a sentence finish
Run Code Online (Sandbox Code Playgroud)

regex python-2.7

5
推荐指数
1
解决办法
1807
查看次数

如何使用tf.reshape()?

import tensorflow as tf

import random

import numpy as np


x= tf.placeholder('float')

x=tf.reshape(x,[-1,28,28,1])

with tf.Session() as sess:

    x1 = np.asarray([random.uniform(0,1) for i in range(784)])

    result = sess.run(x, feed_dict={x: x1})

    print(result)
Run Code Online (Sandbox Code Playgroud)

我在重整形时使用mnist数据时遇到了一些问题,但是这个问题是我的问题的简化版本...为什么此代码实际上不起作用?

表明

“ ValueError:无法为具有形状'(?,28,28,1)'的张量'Reshape:0'输入形状(784,)的值。“

我该怎么解决?

python numpy reshape mnist tensorflow

5
推荐指数
1
解决办法
6969
查看次数

AttributeError: 'module' 对象在 python Validation.py 之后没有属性 'TimeSeries'

Tucker Balch 刚刚开始计算投资。我正在使用 virtualbox 并安装了 Ubuntu。安装 QSTK 后,我运行了 python Validation.py(步骤 7)。我不断收到:

AttributeError: 'module' 对象没有属性 'TimeSeries'

有很多类似的问题,所以我相信问题是在代码中的某处使用了与文件相同的名称。我想知道是否有人有特定于此类和 QSTK 的解决方案。

完整的错误是:

Traceback (most recent call last):
 File "Validation.py", line 122 in <module>
  import QSTK.qstkutil.tsutil as tsu
 File "usr/local/lib/python2.7/dist-packages/QSTK-0.2.8 py2.7.egg/QSTK/qstkutil/tsutil.py", line 19, in <module>
  from QSTK.qstkutil import qsdateutil
 File "usr/local/lib/python2.7/dist-packages/QSTK-0.2.8-py2.7.egg/QSTK/qstkutil/qsdateutil.py", line 38, in <module>
  GTS_DATES = _cache_dates()
 File "usr/local/lib/python2.7/dist-packages/QSTK-0.2.8-py2.7.egg/QSTK/qstkutil/qsdateutil.py", line 36, in _cache_dates
  return pd.TimeSeries(index=dates, data=dates) 
AttributeError: 'module' object has no attribute 'TimeSeries' 
Run Code Online (Sandbox Code Playgroud)

python ubuntu python-2.7 qstk

4
推荐指数
2
解决办法
2281
查看次数