在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代码一些奇怪的行为-
和-=
.我正在使用numpy编写QR分解,并在双循环中使用以下代码行:
v = v - r[i,j] * q[:,i]
Run Code Online (Sandbox Code Playgroud)
在哪里q
和r
都是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 …
我去了所有的文档,我也去了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
到模型.
我需要将模型数据(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
错误.事实上,我过滤两次以获得单个实例,似乎必须有更好的方法.
我有一个字符串如下:
1|234|4456|789
Run Code Online (Sandbox Code Playgroud)
我必须把它转换成numpy数组.我想知道最有效的方法.因为我将调用这个函数超过5000万次!
我正在尝试使用django文档生成表单.我不断得到错误:
'TestForm' object has no attribute 'cleaned_data'
Run Code Online (Sandbox Code Playgroud)
即使form.is_valid
是True
(它打印我的代码的'形式是有效'行).以下是我的代码的相关部分.
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中实现了一个后缀树来进行全文搜索,并且它的工作非常好.但是有一个问题:索引文本可能非常大,因此我们无法将整个结构放在RAM中.
图像:单词的后缀树BANANAS
(在我的场景中,想象一棵大100000倍的树).
所以,研究一下它我找到了一个pickle
模块,一个很好的Python模块,用于从文件中"加载"和"转储"对象,然后猜猜是什么?它与我的数据结构完美配合.
因此,长话短说:在磁盘上存储和检索此结构的最佳策略是什么?我的意思是,一个解决方案可能是将每个节点存储在一个文件中,并在需要时从磁盘加载它,但这不是最好的想法(太多的磁盘访问).
脚注:虽然我已将此问题标记为python,但编程语言并不是问题的重要部分,磁盘存储/检索策略确实是重点.
在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()
功能加载所有的文件内容到内存中.
是否有任何性能或文件处理改进?或者他们只是以同样的方式做同样的事情?
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) 我试图使用我获得的字母频率生成随机文本.首先,我成功完成以下代码:
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)