小编jul*_*ria的帖子

交叉口复杂性

在Python中,您可以获得两组的交集:

>>> s1 = {1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s2 = {0, 3, 5, 6, 10}
>>> s1 & s2
set([3, 5, 6])
>>> s1.intersection(s2)
set([3, 5, 6])
Run Code Online (Sandbox Code Playgroud)

&谁知道这个intersection()算法的复杂性?

编辑:此外,有谁知道Python集背后的数据结构是什么?

python complexity-theory set

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

- vs - =有numpy的运算符

我有我的关系到Python代码一些奇怪的行为--=.我正在使用numpy编写QR分解,并在双循环中使用以下代码行:

v = v - r[i,j] * q[:,i]
Run Code Online (Sandbox Code Playgroud)

在哪里qr都是numpy.array,并且v是另一个numpy.array被视为的片段v = x[:,j].

在所有情况下,上述代码都无法正常工作.但是,如果我做出以下更改:

v -= r[i,j] * q[:,i]
Run Code Online (Sandbox Code Playgroud)

然后一切都完美无瑕.

我的印象是这两行应该是相同的.为了测试是否-=以及_ = _ - 以不同的方式工作,我创建了以下代码段

import numpy

x = numpy.array(range(0,6))
y = numpy.array(range(0,6))

u = x[3:5]
v = y[3:5]

print u,v

u = u - [1,1]
v -= [1,1]

print u,v
Run Code Online (Sandbox Code Playgroud)

它再次按预期工作,[2 3] [2 3]在两个印刷声明中生成.

所以我完全混淆了为什么这两行表现不同.我能想到的唯一可能的事情是我有时会处理极小的数字(大约10 ^ -8或更小)并且有一些更精确的问题-=?随着元素x …

python numpy

13
推荐指数
3
解决办法
2763
查看次数

型号limit_choices_to = {'用户':用户}

我去了所有的文档,我也去了IRC频道(BTW一个伟大的社区),他们告诉我,在"当前用户"在ForeignKey中的字段中创建模型并限制选择是不可能的.我将尝试用一个例子解释这个:

class Project(models.Model):
  name = models.CharField(max_length=100)
  employees = models.ManyToManyField(Profile, limit_choices_to={'active': '1'})

class TimeWorked(models.Model):
  project = models.ForeignKey(Project, limit_choices_to={'user': user})
  hours = models.PositiveIntegerField()
Run Code Online (Sandbox Code Playgroud)

当然这段代码不起作用,因为没有'用户'对象,但这是我的想法,我试图将对象'用户'发送到模型,只是限制当前用户有项目的选择,我不我不想看到我不在的项目.

非常感谢你,如果你可以帮助我或给我任何建议,我不想你写所有的应用程序,只是一个提示如何处理.我有2天的时间在脑海中,我无法弄清楚:(

更新:解决方案在这里:http://collingrady.wordpress.com/2008/07/24/useful-form-tricks-in-django/发送request.user到模型.

python django model

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

从模型数据生成XML文件

我需要将模型数据(CharField仅限s)写入XML文件以包含flash文件的数据.我是新手,对于我在django这样做的过程有点不清楚.我正在创建一个xml文件,然后将文本数据写入文件(就像使用csv模块,但是使用xml).应该为Flash文件读取一个非常简化的xml文件,即:

<?xml version="1.0" encoding="UTF-8"?>
<textFields>
     <textField id="0" text="HELLO WORLD" />
     <textField id="1" text="HELLO EARTH" />
     ...
</textFields>
Run Code Online (Sandbox Code Playgroud)

1.我正在使用序列化程序从模型中编写xml数据:

from django.core import serializers
data = serializers.serialize('xml', myModel.objects.filter(instanceIwantTowrite), fields=('fieldName'))
Run Code Online (Sandbox Code Playgroud)

2.然后我用core.files以下方法创建文件:

from django.core.files import File    
f = open('/path/to/new/dir/content.xml', 'w')
myfile = File(f)
Run Code Online (Sandbox Code Playgroud)

3.写入文件数据并关闭:

myfile.write(data)

myfile.close()
Run Code Online (Sandbox Code Playgroud)

这个工作到目前为止,虽然xml输出包含对象"django-objects"等的字段,我将不得不看看我是否可以在ActionScript中轻松地为flash文件解释这个.我更喜欢手动定义xml字段名称,就像在csv模块中一样.由于我是django和python的新手,我想知道是否有更简单,更简单的方法来做到这一点?

注意:在序列化程序中,我对模型对象使用过滤器,因为get用于模型实例会返回object not iterable错误.事实上,我过滤两次以获得单个实例,似乎必须有更好的方法.

python xml django serialization

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

将分隔符分隔的字符串转换为numpy数组的有效方法

我有一个字符串如下:

1|234|4456|789
Run Code Online (Sandbox Code Playgroud)

我必须把它转换成numpy数组.我想知道最有效的方法.因为我将调用这个函数超过5000万次!

python numpy

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

表单对象没有属性'cleaning_data'

我正在尝试使用django文档生成表单.我不断得到错误:

'TestForm' object has no attribute 'cleaned_data'
Run Code Online (Sandbox Code Playgroud)

即使form.is_validTrue(它打印我的代码的'形式是有效'行).以下是我的代码的相关部分.

urls.py

url(r'^test/',views.test),
Run Code Online (Sandbox Code Playgroud)

forms.py

from django import forms
class TestForm(forms.Form):
    name = forms.CharField()
Run Code Online (Sandbox Code Playgroud)

views.py

def test(request):
    if request.method == 'POST':
        form = TestForm(request.POST)
        if form.is_valid:
            print 'form is valid'
            print form.cleaned_data                       
        else:
            print 'form not valid'
    else:
         form = TestForm()

    return render_to_response('User/Test.html',{'form': form},context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

的test.html

<form action="" method="post">{% csrf_token %}
        <table>
            {{ form.as_table }}
        </table>
        <input type="submit" value="Submit">
    </form>
Run Code Online (Sandbox Code Playgroud)

python django-templates django-forms django-views

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

存储/检索数据结构

我在Python中实现了一个后缀树来进行全文搜索,并且它的工作非常好.但是有一个问题:索引文本可能非常大,因此我们无法将整个结构放在RAM中.

在此输入图像描述

图像:单词的后缀树BANANAS(在我的场景中,想象一棵大100000倍的树).

所以,研究一下它我找到了一个pickle模块,一个很好的Python模块,用于从文件中"加载"和"转储"对象,然后猜猜是什么?它与我的数据结构完美配合.

因此,长话短说:在磁盘上存储和检索此结构的最佳策略是什么?我的意思是,一个解决方案可能是将每个节点存储在一个文件中,并在需要时从磁盘加载它,但这不是最好的想法(太多的磁盘访问).


脚注:虽然我已将此问题标记为,但编程语言并不是问题的重要部分,磁盘存储/检索策略确实是重点.

python ram disk-io data-structures

11
推荐指数
1
解决办法
2168
查看次数

xreadlines和for循环文件之间的区别

在Python 2.7中有一个文件对象:

f = open('my_file', 'r')
Run Code Online (Sandbox Code Playgroud)

循环文件(最常见的方式)和使用xreadlines()函数之间的区别是什么:

for line in f:
    # Do something with line
Run Code Online (Sandbox Code Playgroud)

for line in f.xreadlines():
    # Do something with line
Run Code Online (Sandbox Code Playgroud)

我的意思是,这两个选项定义了发电机,而相比之下,readlines()read()功能加载所有的文件内容到内存中.

是否有任何性能或文件处理改进?或者他们只是以同样的方式做同样的事情?

python file

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

Combining lists into one

I am writing a small script to help out with Japanese kana memorisation. How would I combine the following lists into one? I tried as follows.

a = ["a",   "i",   "u",   "e",   "o"]
k = ["ka",  "ki",  "ku",  "ke",  "ko"]
g = ["ga",  "gi",  "gu",  "ge",  "go"]
s = ["sa",  "shi", "su",  "se",  "so"]
z = ["za",  "ji",  "zu",  "ze",  "zo"]
t = ["ta",  "chi", "tsu", "te",  "to"]
d = ["da",         "du",  "de",  "do"]
n = ["na",  "ni",  "nu",  "ne", …
Run Code Online (Sandbox Code Playgroud)

python list

11
推荐指数
4
解决办法
4万
查看次数

使用数组生成随机文本

我试图使用我获得的字母频率生成随机文本.首先,我成功完成以下代码:

for i in range(450):
    outcome=random.random()
    if 0<outcome<0.06775:
        sys.stdout.write('a')
    if 0.06775<outcome<0.07920:
        sys.stdout.write('b')
    if 0.07920<outcome<0.098:
        sys.stdout.write('c')
    ....
Run Code Online (Sandbox Code Playgroud)

这直到字母z和空格键.这给了我> 50行代码,我希望使用数组得到相同的结果.

到目前为止,我有:

f_list = [0, 0.06775, 0.08242, 0.10199, 0.13522, 0.23703, 0.25514, 0.27324, 0.32793, 0.38483, 0.38577, 0.39278, 0.42999, 0.45023, 0.50728, 0.56756, 0.58256, 0.58391, 0.62924, 0.68509, 0.7616, 0.78481, 0.79229, 0.81161, 0.81251, 0.82718, 0.82773, 0.99998]
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' ']

import …
Run Code Online (Sandbox Code Playgroud)

python arrays

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